package com.webank.wecross.stub.bcos.performance.hellowecross.proxy;

import java.math.BigInteger;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.fisco.bcos.sdk.abi.FunctionReturnDecoder;
import org.fisco.bcos.sdk.abi.TypeReference;
import org.fisco.bcos.sdk.abi.datatypes.Address;
import org.fisco.bcos.sdk.abi.datatypes.DynamicArray;
import org.fisco.bcos.sdk.abi.datatypes.DynamicBytes;
import org.fisco.bcos.sdk.abi.datatypes.Function;
import org.fisco.bcos.sdk.abi.datatypes.Type;
import org.fisco.bcos.sdk.abi.datatypes.Utf8String;
import org.fisco.bcos.sdk.abi.datatypes.generated.Uint256;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple1;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple2;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple3;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple4;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple6;
import org.fisco.bcos.sdk.client.Client;
import org.fisco.bcos.sdk.contract.Contract;
import org.fisco.bcos.sdk.crypto.CryptoSuite;
import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair;
import org.fisco.bcos.sdk.model.CryptoType;
import org.fisco.bcos.sdk.model.TransactionReceipt;
import org.fisco.bcos.sdk.model.callback.TransactionCallback;
import org.fisco.bcos.sdk.transaction.model.exception.ContractException;

@SuppressWarnings("unchecked")
public class WeCrossProxy extends Contract {
    public static final String[] BINARY_ARRAY = {
        "6080604052600060035560006004553480156200001b57600080fd5b50611004600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061a99f806200006f6000396000f3fe608060405260043610610168576000357c010000000000000000000000000000000000000000000000000000000090048063798133dd116100d3578063c6d500201161008c578063c6d500201461056d578063cc71b30f146105aa578063d1b04b83146105d3578063d8f8e8db14610610578063e43dab621461063b578063ed2804b41461066657610168565b8063798133dd146103ff578063819a3d621461043c578063897f025114610479578063aa7fb5a0146104b6578063ac5d3723146104f3578063b54138b01461053057610168565b8063248b43a711610125578063248b43a7146102b757806357c85693146102f45780636476ee381461031f5780636842921b1461035c57806376cc48391461039957806378e3a393146103c257610168565b8063087078931461016d5780630d8e6e2c146101aa5780630e36518a146101d55780631767ae33146102125780631c62ca6f1461023d57806321875b541461027a575b600080fd5b34801561017957600080fd5b50610194600480360361018f9190810190619db2565b61067d565b6040516101a1919061a4ce565b60405180910390f35b3480156101b657600080fd5b506101bf610b74565b6040516101cc919061a52d565b60405180910390f35b3480156101e157600080fd5b506101fc60048036036101f79190810190619c43565b610bb1565b604051610209919061a50b565b60405180910390f35b34801561021e57600080fd5b50610227610d23565b604051610234919061a4e9565b60405180910390f35b34801561024957600080fd5b50610264600480360361025f9190810190619bac565b610e0c565b604051610271919061a52d565b60405180910390f35b34801561028657600080fd5b506102a1600480360361029c9190810190619b2a565b611543565b6040516102ae919061a52d565b60405180910390f35b3480156102c357600080fd5b506102de60048036036102d99190810190619b2a565b611a17565b6040516102eb919061a52d565b60405180910390f35b34801561030057600080fd5b5061030961232e565b604051610316919061a52d565b60405180910390f35b34801561032b57600080fd5b5061034660048036036103419190810190619b2a565b61238f565b604051610353919061a52d565b60405180910390f35b34801561036857600080fd5b50610383600480360361037e919081019061a0fc565b6123ab565b604051610390919061a52d565b60405180910390f35b3480156103a557600080fd5b506103c060048036036103bb9190810190619f38565b6131fb565b005b3480156103ce57600080fd5b506103e960048036036103e49190810190619b2a565b6136d5565b6040516103f6919061a52d565b60405180910390f35b34801561040b57600080fd5b5061042660048036036104219190810190619ac0565b61436a565b604051610433919061a4ce565b60405180910390f35b34801561044857600080fd5b50610463600480360361045e9190810190619b2a565b6143cb565b604051610470919061a52d565b60405180910390f35b34801561048557600080fd5b506104a0600480360361049b9190810190619caf565b6144a0565b6040516104ad919061a52d565b60405180910390f35b3480156104c257600080fd5b506104dd60048036036104d89190810190619d1b565b614578565b6040516104ea919061a50b565b60405180910390f35b3480156104ff57600080fd5b5061051a60048036036105159190810190619b2a565b614999565b604051610527919061a6e7565b60405180910390f35b34801561053c57600080fd5b5061055760048036036105529190810190619e75565b614b6f565b604051610564919061a50b565b60405180910390f35b34801561057957600080fd5b50610594600480360361058f9190810190619b2a565b614dd0565b6040516105a1919061a52d565b60405180910390f35b3480156105b657600080fd5b506105d160048036036105cc9190810190619b2a565b61515d565b005b3480156105df57600080fd5b506105fa60048036036105f59190810190619ffb565b61519f565b604051610607919061a50b565b60405180910390f35b34801561061c57600080fd5b50610625615cb9565b604051610632919061a52d565b60405180910390f35b34801561064757600080fd5b50610650615dbe565b60405161065d919061a52d565b60405180910390f35b34801561067257600080fd5b5061067b615ed1565b005b6000606061068a86615ee3565b905060006106998260006160ef565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561072357506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff165b1561087757816000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016040516020018083805190602001908083835b6020831015156107a2578051825260208201915060208101905060208303925061077d565b6001836020036101000a0380198251168184511680821785525050505050509050018061a8e860299139602901828054600181600116156101000203166002900480156108265780601f10610804576101008083540402835291820191610826565b820191906000526020600020905b815481529060010190602001808311610812575b5050925050506040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086e919061a52d565b60405180910390fd5b60006108828661436a565b90506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a216464b858a6108cf86616524565b8a6040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161090b949392919061a586565b602060405180830381600087803b15801561092557600080fd5b505af1158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061095d9190810190619b01565b9050806001141515610b265783886109866000841361097f5783600003610981565b835b6167ce565b6040516020018084805190602001908083835b6020831015156109be5780518252602082019150602081019050602083039250610999565b6001836020036101000a038019825116818451168082178552505050505050905001807f3a0000000000000000000000000000000000000000000000000000000000000081525060010183805190602001908083835b602083101515610a395780518252602082019150602081019050602083039250610a14565b6001836020036101000a038019825116818451168082178552505050505050905001807f20756e61626c6520726567697374657220746f20636e732c206572726f723a2081525060200182805190602001908083835b602083101515610ab45780518252602082019150602081019050602083039250610a8f565b6001836020036101000a03801982511681845116808217855250505050505090500193505050506040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d919061a52d565b60405180910390fd5b6006899080600181540180825580915050906001820390600052602060002001600090919290919091509080519060200190610b639291906194e7565b505081945050505050949350505050565b60606040805190810160405280600681526020017f76312e302e300000000000000000000000000000000000000000000000000000815250905090565b60606000610bc08460016160ef565b90506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615610d10576000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101604051602001808061a9116031913960310182805460018160011615610100020316600290048015610cc05780601f10610c9e576101008083540402835291820191610cc0565b820191906000526020600020905b815481529060010190602001808311610cac575b50509150506040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d07919061a52d565b60405180910390fd5b610d1a8184616898565b91505092915050565b60606006805480602002602001604051908101604052809291908181526020016000905b82821015610e03578382906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610def5780601f10610dc457610100808354040283529160200191610def565b820191906000526020600020905b815481529060010190602001808311610dd257829003601f168201915b505050505081526020019060010190610d47565b50505050905090565b6060610e17846169a4565b15610f15578360405160200180807f7861207472616e73616374696f6e200000000000000000000000000000000000815250600f0182805190602001908083835b602083101515610e7d5780518252602082019150602081019050602083039250610e58565b6001836020036101000a038019825116818451168082178552505050505050905001807f20616c7265616479206578697374730000000000000000000000000000000000815250600f019150506040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0c919061a52d565b60405180910390fd5b600083519050600083519050606082604051908082528060200260200182016040528015610f525781602001602082028038833980820191505090505b5090506060828401604051908082528060200260200182016040528015610f8d57816020015b6060815260200190600190039081610f785790505b509050",
        "60008090505b848110156112b8576000610fc08983815181101515610fb157fe5b90602001906020020151616a1f565b9050808483815181101515610fd157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16156111c757888281518110151561106f57fe5b906020019060200201516000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016040516020018083805190602001908083835b6020831015156110f257805182526020820191506020810190506020830392506110cd565b6001836020036101000a0380198251168184511680821785525050505050509050018061a8e860299139602901828054600181600116156101000203166002900480156111765780601f10611154576101008083540402835291820191611176565b820191906000526020600020905b815481529060010190602001808311611162575b5050925050506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111be919061a52d565b60405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff021916908315150217905550896000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010190805190602001906112769291906194e7565b50888281518110151561128557fe5b90602001906020020151838381518110151561129d57fe5b90602001906020020181905250508080600101915050610f96565b5060008090505b838110156113095786818151811015156112d557fe5b90602001906020020151828287018151811015156112ef57fe5b9060200190602002018190525080806001019150506112bf565b50606061040060405190808252806020026020018201604052801561133d5781602001602082028038833980820191505090505b5090506101206040519081016040528061135632616524565b81526020018381526020018481526020016040805190810160405280600a81526020017f70726f63657373696e670000000000000000000000000000000000000000000081525081526020016103e8428115156113af57fe5b0481526020016000815260200160008152602001828152602001600081525060018a6040518082805190602001908083835b60208310151561140657805182526020820191506020810190506020830392506113e1565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206000820151816000019080519060200190611455929190619567565b5060208201518160010190805190602001906114729291906195e7565b50604082015181600201908051906020019061148f929190619647565b5060608201518160030190805190602001906114ac929190619567565b506080820151816004015560a0820151816005015560c0820151816006015560e08201518160070190805190602001906114e79291906196d1565b5061010082015181600801559050506114ff89616a41565b6040805190810160405280600781526020017f7375636365737300000000000000000000000000000000000000000000000000815250955050505050509392505050565b606061154e826169a4565b151561158f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115869061a647565b60405180910390fd5b6116d46001836040518082805190602001908083835b6020831015156115ca57805182526020820191506020810190506020830392506115a5565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206003018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116945780601f1061166957610100808354040283529160200191611694565b820191906000526020600020905b81548152906001019060200180831161167757829003601f168201915b50505050506040805190810160405280600981526020017f636f6d6d69747465640000000000000000000000000000000000000000000000815250616a95565b15611714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170b9061a5e7565b60405180910390fd5b6118596001836040518082805190602001908083835b60208310151561174f578051825260208201915060208101905060208303925061172a565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206003018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118195780601f106117ee57610100808354040283529160200191611819565b820191906000526020600020905b8154815290600101906020018083116117fc57829003601f168201915b50505050506040805190810160405280600a81526020017f726f6c6c65646261636b00000000000000000000000000000000000000000000815250616a95565b15611899576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118909061a6c7565b60405180910390fd5b6103e8428115156118a657fe5b046001836040518082805190602001908083835b6020831015156118df57805182526020820191506020810190506020830392506118ba565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600501819055506040805190810160405280600981526020017f636f6d6d697474656400000000000000000000000000000000000000000000008152506001836040518082805190602001908083835b6020831015156119875780518252602082019150602081019050602083039250611962565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030190805190602001906119d09291906194e7565b506119da82616ab0565b6040805190810160405280600781526020017f73756363657373000000000000000000000000000000000000000000000000008152509050919050565b6060611a22826169a4565b1515611a63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5a9061a647565b60405180910390fd5b816001836040518082805190602001908083835b602083101515611a9c5780518252602082019150602081019050602083039250611a77565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206000016001846040518082805190602001908083835b602083101515611b0a5780518252602082019150602081019050602083039250611ae5565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600301611b4985616c56565b611bc06001876040518082805190602001908083835b602083101515611b845780518252602082019150602081019050602083039250611b5f565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600401546167ce565b611c376001886040518082805190602001908083835b602083101515611bfb5780518252602082019150602081019050602083039250611bd6565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600501546167ce565b611cae6001896040518082805190602001908083835b602083101515611c725780518252602082019150602081019050602083039250611c4d565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600601546167ce565b611de38960018b6040518082805190602001908083835b602083101515611cea5780518252602082019150602081019050602083039250611cc5565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600701805480602002602001604051908101604052809291908181526020018280548015611d6a57602002820191906000526020600020905b815481526020019060010190808311611d56575b505050505060018c6040518082805190602001908083835b602083101515611da75780518252602082019150602081019050602083039250611d82565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060080154617073565b60405160200180807f7b2278615472616e73616374696f6e4944223a2200000000000000000000000081525060140189805190602001908083835b602083101515611e435780518252602082019150602081019050602083039250611e1e565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f226163636f756e744964656e74697479223a220000000000000000000000000081525060130188805460018160011615610100020316600290048015611f0c5780601f10611eea576101008083540402835291820191611f0c565b820191906000526020600020905b815481529060010190602001808311611ef8575b5050807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f22737461747573223a2200000000000000000000000000000000000000000000815250600a0187805460018160011615610100020316600290048015611fb55780601f10611f93576101008083540402835291820191611f",
        "b5565b820191906000526020600020905b815481529060010190602001808311611fa1575b5050807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f227061746873223a00000000000000000000000000000000000000000000000081525060080186805190602001908083835b6020831015156120385780518252602082019150602081019050602083039250612013565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f22737461727454696d657374616d70223a00000000000000000000000000000081525060110185805190602001908083835b6020831015156120db57805182526020820191506020810190506020830392506120b6565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f22636f6d6d697454696d657374616d70223a000000000000000000000000000081525060120184805190602001908083835b60208310151561217e5780518252602082019150602081019050602083039250612159565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f22726f6c6c6261636b54696d657374616d70223a00000000000000000000000081525060140183805190602001908083835b60208310151561222157805182526020820191506020810190506020830392506121fc565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f2278615472616e73616374696f6e5374657073223a000000000000000000000081525060150182805190602001908083835b6020831015156122c4578051825260208201915060208101905060208303925061229f565b6001836020036101000a038019825116818451168082178552505050505050905001807f7d00000000000000000000000000000000000000000000000000000000000000815250600101985050505050505050506040516020818303038152906040529050919050565b60606000600580549050141561237b576040805190810160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061238c565b6123896005805490506167ce565b90505b90565b606061239a826136d5565b506123a482617a38565b9050919050565b60606000600580549050905060008114156123fe576040805190810160405280601f81526020017f7b22746f74616c223a302c2278615472616e73616374696f6e73223a5b5d7d008152509150506131f5565b600061243f6040805190810160405280600281526020017f2d3100000000000000000000000000000000000000000000000000000000000081525086616a95565b6124515761244c85614999565b612456565b600182035b905080821115156124a0576040805190810160405280601f81526020017f7b22746f74616c223a302c2278615472616e73616374696f6e73223a5b5d7d00815250925050506131f5565b60606040805190810160405280600181526020017f5b00000000000000000000000000000000000000000000000000000000000000815250905060008090505b60018603811080156124f457506000818403115b15612acb576060600582850381548110151561250c57fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156125aa5780601f1061257f576101008083540402835291602001916125aa565b820191906000526020600020905b81548152906001019060200180831161258d57829003601f168201915b5050505050905082816001836040518082805190602001908083835b6020831015156125eb57805182526020820191506020810190506020830392506125c6565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206000016001846040518082805190602001908083835b6020831015156126595780518252602082019150602081019050602083039250612634565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030161269885616c56565b61270f6001876040518082805190602001908083835b6020831015156126d357805182526020820191506020810190506020830392506126ae565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600401546167ce565b6040516020018087805190602001908083835b6020831015156127475780518252602082019150602081019050602083039250612722565b6001836020036101000a038019825116818451168082178552505050505050905001807f7b2278615472616e73616374696f6e4944223a2200000000000000000000000081525060140186805190602001908083835b6020831015156127c2578051825260208201915060208101905060208303925061279d565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f226163636f756e744964656e74697479223a22000000000000000000000000008152506013018580546001816001161561010002031660029004801561288b5780601f1061286957610100808354040283529182019161288b565b820191906000526020600020905b815481529060010190602001808311612877575b5050807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f22737461747573223a2200000000000000000000000000000000000000000000815250600a01848054600181600116156101000203166002900480156129345780601f10612912576101008083540402835291820191612934565b820191906000526020600020905b815481529060010190602001808311612920575b5050807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f227061746873223a00000000000000000000000000000000000000000000000081525060080183805190602001908083835b6020831015156129b75780518252602082019150602081019050602083039250612992565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f2274696d657374616d70223a0000000000000000000000000000000000000000815250600c0182805190602001908083835b602083101515612a5a5780518252602082019150602081019050602083039250612a35565b6001836020036101000a038019825116818451168082178552505050505050905001807f7d2c000000000000000000000000000000000000000000000000000000000000815250600201965050505050505060405160208183030381529060405292505080806001019150506124e0565b50600085600184011015612ae0576000612ae7565b8560018401035b90506060600582815481101515612afa57fe5b906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612b985780601f10612b6d57610100808354040283529160200191612b98565b820191906000526020600020905b815481529060010190602001808311612b7b57829003601f168201915b5050505050905082816001836040518082805190602001908083835b602083101515612bd95780518252602082019150602081019050602083039250612bb4565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206000016001846040518082805190602001908083835b602083101515612c475780518252602082019150602081019050602083039250612c22565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600301612c8685616c56565b612cfd6001876040518082805190602001908083835b602083101515612cc15780518252602082019150602081019050602083039250612c9c565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600401546167ce565b6040516020018087805190602001908083835b602083101515612d355780518252602082019150602081019050602083039250612d10565b6001836020036101000a038019825116818451168082178552505050505050905001807f7b2278615472616e73616374696f6e4944223a2200000000000000000000000081525060140186805190602001908083835b602083101515612db05780518252602082019150602081019050602083039250612d8b565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f226163636f756e744964656e74697479223a220000000000000000000000000081525060130185805460018160011615610100020316600290048015612e795780601f10612e57576101008083540402835291820191612e79565b820191906000526020600020905b815481529060010190602001808311612e65575b5050807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f22737461747573223a2200000000000000000000000000000000000000000000815250600a0184805460018160011615610100020316600290048015612f225780601f10612f00576101008083540402835291820191612f22565b820191906000526020600020905b815481529060010190602001808311612f0e575b5050807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f227061746873223a00000000000000000000000000000000000000000000000081525060080183805190602001908083835b602083101515612fa557805182526020",
        "82019150602081019050602083039250612f80565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f2274696d657374616d70223a0000000000000000000000000000000000000000815250600c0182805190602001908083835b6020831015156130485780518252602082019150602081019050602083039250613023565b6001836020036101000a038019825116818451168082178552505050505050905001807f7d5d000000000000000000000000000000000000000000000000000000000000815250600201965050505050505060405160208183030381529060405292506130b4856167ce565b8360405160200180807f7b22746f74616c223a000000000000000000000000000000000000000000000081525060090183805190602001908083835b60208310151561311557805182526020820191506020810190506020830392506130f0565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c2278615472616e73616374696f6e73223a000000000000000000000000000081525060120182805190602001908083835b602083101515613190578051825260208201915060208101905060208303925061316b565b6001836020036101000a038019825116818451168082178552505050505050905001807f7d0000000000000000000000000000000000000000000000000000000000000081525060010192505050604051602081830303815290604052955050505050505b92915050565b606061320685615ee3565b905060006132158260006160ef565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561329f57506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff165b156133f357816000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016040516020018083805190602001908083835b60208310151561331e57805182526020820191506020810190506020830392506132f9565b6001836020036101000a0380198251168184511680821785525050505050509050018061a8e860299139602901828054600181600116156101000203166002900480156133a25780601f106133805761010080835404028352918201916133a2565b820191906000526020600020905b81548152906001019060200180831161338e575b5050925050506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ea919061a52d565b60405180910390fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a216464b848888886040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401613472949392919061a586565b602060405180830381600087803b15801561348c57600080fd5b505af11580156134a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506134c49190810190619b01565b905080600114151561368d5782866134ed600084136134e657836000036134e8565b835b6167ce565b6040516020018084805190602001908083835b6020831015156135255780518252602082019150602081019050602083039250613500565b6001836020036101000a038019825116818451168082178552505050505050905001807f3a0000000000000000000000000000000000000000000000000000000000000081525060010183805190602001908083835b6020831015156135a0578051825260208201915060208101905060208303925061357b565b6001836020036101000a038019825116818451168082178552505050505050905001807f20756e61626c6520726567697374657220746f20636e732c206572726f723a2081525060200182805190602001908083835b60208310151561361b57805182526020820191506020810190506020830392506135f6565b6001836020036101000a03801982511681845116808217855250505050505090500193505050506040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613684919061a52d565b60405180910390fd5b60068790806001815401808255809150509060018203906000526020600020016000909192909190915090805190602001906136ca9291906194e7565b505050505050505050565b6060806040805190810160405280600781526020017f73756363657373000000000000000000000000000000000000000000000000008152509050613719836169a4565b151561375a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137519061a647565b60405180910390fd5b61389f6001846040518082805190602001908083835b6020831015156137955780518252602082019150602081019050602083039250613770565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206003018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561385f5780601f106138345761010080835404028352916020019161385f565b820191906000526020600020905b81548152906001019060200180831161384257829003601f168201915b50505050506040805190810160405280600981526020017f636f6d6d69747465640000000000000000000000000000000000000000000000815250616a95565b156138df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138d69061a5e7565b60405180910390fd5b613a246001846040518082805190602001908083835b60208310151561391a57805182526020820191506020810190506020830392506138f5565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206003018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156139e45780601f106139b9576101008083540402835291602001916139e4565b820191906000526020600020905b8154815290600101906020018083116139c757829003601f168201915b50505050506040805190810160405280600a81526020017f726f6c6c65646261636b00000000000000000000000000000000000000000000815250616a95565b15613a64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a5b9061a6c7565b60405180910390fd5b60606040805190810160405280600881526020017f7761726e696e673a000000000000000000000000000000000000000000000000815250905060006001856040518082805190602001908083835b602083101515613ad85780518252602082019150602081019050602083039250613ab3565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060080154905060008190505b600081111561421d5760006001876040518082805190602001908083835b602083101515613b5a5780518252602082019150602081019050602083039250613b35565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060070160018303815481101515613ba057fe5b906000526020600020015490506060613bb98883617bce565b905060606002826040518082805190602001908083835b602083101515613bf55780518252602082019150602081019050602083039250613bd0565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206004018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613cbf5780601f10613c9457610100808354040283529160200191613cbf565b820191906000526020600020905b815481529060010190602001808311613ca257829003601f168201915b5050505050905060006002836040518082805190602001908083835b602083101515613d005780518252602082019150602081019050602083039250613cdb565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060606002846040518082805190602001908083835b602083101515613d935780518252602082019150602081019050602083039250613d6e565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206005018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613e5d5780601f10613e3257610100808354040283529160200191613e5d565b820191906000526020600020905b815481529060010190602001808311613e4057829003601f168201915b505050505090506060613ea5846040805190810160405280600781526020017f5f72657665727400000000000000000000000000000000000000000000000000815250617ca2565b604051602401604051602081830303815290604052906040518082805190602001908083835b602083101515613ef05780518252602082019150602081019050602083039250613ecb565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060008373ffffffffffffffffffffffffffffffffffffffff168284604051602001808380",
        "5190602001908083835b602083101515613fbf5780518252602082019150602081019050602083039250613f9a565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b6020831015156140125780518252602082019150602081019050602083039250613fed565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b60208310151561407c5780518252602082019150602081019050602083039250614057565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146140de576040519150601f19603f3d011682016040523d82523d6000602084013e6140e3565b606091505b5050809150508015156142085789856040516020018083805190602001908083835b60208310151561412a5780518252602082019150602081019050602083039250614105565b6001836020036101000a038019825116818451168082178552505050505050905001807f207265766572742022000000000000000000000000000000000000000000000081525060090182805190602001908083835b6020831015156141a55780518252602082019150602081019050602083039250614180565b6001836020036101000a038019825116818451168082178552505050505050905001807f22206661696c65642e0000000000000000000000000000000000000000000000815250600901925050506040516020818303038152906040529950899a505b50505050505050808060019003915050613b17565b506103e84281151561422b57fe5b046001866040518082805190602001908083835b602083101515614264578051825260208201915060208101905060208303925061423f565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600601819055506040805190810160405280600a81526020017f726f6c6c65646261636b000000000000000000000000000000000000000000008152506001866040518082805190602001908083835b60208310151561430c57805182526020820191506020810190506020830392506142e7565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030190805190602001906143559291906194e7565b5061435f85616ab0565b829350505050919050565b600080600090508251602084016000f091506000823b1190508015156143c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016143bc9061a627565b60405180910390fd5b50919050565b6060600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663819a3d62836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401614444919061a52d565b60006040518083038186803b15801561445c57600080fd5b505afa158015614470573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506144999190810190619b6b565b9050919050565b6060600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663897f025184846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161451b92919061a54f565b60006040518083038186803b15801561453357600080fd5b505afa158015614547573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506145709190810190619b6b565b905092915050565b60606007846040518082805190602001908083835b6020831015156145b2578051825260208201915060208101905060208303925061458d565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000160009054906101000a900460ff1615614709576007846040518082805190602001908083835b602083101515614633578051825260208201915060208101905060208303925061460e565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156146fd5780601f106146d2576101008083540402835291602001916146fd565b820191906000526020600020905b8154815290600101906020018083116146e057829003601f168201915b50505050509050614992565b60006147168460016160ef565b90506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16156148bb57836000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016040516020018083805190602001908083835b6020831015156147e657805182526020820191506020810190506020830392506147c1565b6001836020036101000a0380198251168184511680821785525050505050509050018061a8e8602991396029018280546001816001161561010002031660029004801561486a5780601f1061484857610100808354040283529182019161486a565b820191906000526020600020905b815481529060010190602001808311614856575b5050925050506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016148b2919061a52d565b60405180910390fd5b60606148c78285616898565b90506040805190810160405280600115158152602001828152506007876040518082805190602001908083835b60208310151561491957805182526020820191506020810190506020830392506148f4565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101908051906020019061498892919061971e565b5090505080925050505b9392505050565b60006060829050600080905060008251905060008090505b81811015614b6357603084828151811015156149c957fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900460ff1610158015614ac7575060398482815181101515614a5357fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900460ff1611155b15614b565760308482815181101515614adc57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f010000000000000000000000000000000000000000000000000000000000000090040360ff16600a84020192505b80806001019150506149b1565b50819350505050919050565b60606000614b7c85616a1f565b9050614b87866169a4565b1515614bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614bbf9061a647565b60405180910390fd5b614cab6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015614ca05780601f10614c7557610100808354040283529160200191614ca0565b820191906000526020600020905b815481529060010190602001808311614c8357829003601f168201915b505050505087616a95565b1515614dba5784866040516020018083805190602001908083835b602083101515614ceb5780518252602082019150602081019050602083039250614cc6565b6001836020036101000a0380198251168184511680821785525050505050509050018061a9426024913960240182805190602001908083835b602083101515614d495780518252602082019150602081019050602083039250614d24565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614db1919061a52d565b60405180910390fd5b614dc5818585618010565b915050949350505050565b60606000614ddd83616a1f565b90506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff161515614e72576040805190810160405280600481526020017f6e756c6c00000000000000000000000000000000000000000000000000000000815250915050615158565b60606000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015614f495780601f10614f1e57610100808354040283529160200191614f49565b820191906000526020600020905b815481529060010190602001808311614f2c57829003601f168201915b5050505050905060006001826040518082805190602001908083835b602083101515614f8a5780518252602082019150602081019050602083039250614f65565b600183602003",
        "6101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600801549050600080821461505a576001836040518082805190602001908083835b6020831015156150045780518252602082019150602081019050602083039250614fdf565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206007016001830381548110151561504a57fe5b906000526020600020015461505d565b60005b905082615069826167ce565b6040516020018083805190602001908083835b6020831015156150a1578051825260208201915060208101905060208303925061507c565b6001836020036101000a038019825116818451168082178552505050505050905001807f200000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b60208310151561511c57805182526020820191506020810190506020830392506150f7565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529450505050505b919050565b600681908060018154018082558091505090600182039060005260206000200160009091929091909150908051906020019061519a9291906194e7565b505050565b60606007876040518082805190602001908083835b6020831015156151d957805182526020820191506020810190506020830392506151b4565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000160009054906101000a900460ff1615615330576007876040518082805190602001908083835b60208310151561525a5780518252602082019150602081019050602083039250615235565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156153245780601f106152f957610100808354040283529160200191615324565b820191906000526020600020905b81548152906001019060200180831161530757829003601f168201915b50505050509050615caf565b600061533b85616a1f565b9050615346876169a4565b1515615387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161537e9061a647565b60405180910390fd5b6154cc6001886040518082805190602001908083835b6020831015156153c2578051825260208201915060208101905060208303925061539d565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206003018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561548c5780601f106154615761010080835404028352916020019161548c565b820191906000526020600020905b81548152906001019060200180831161546f57829003601f168201915b50505050506040805190810160405280600981526020017f636f6d6d69747465640000000000000000000000000000000000000000000000815250616a95565b1561550c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016155039061a5e7565b60405180910390fd5b6156516001886040518082805190602001908083835b6020831015156155475780518252602082019150602081019050602083039250615522565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206003018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156156115780601f106155e657610100808354040283529160200191615611565b820191906000526020600020905b8154815290600101906020018083116155f457829003601f168201915b50505050506040805190810160405280600a81526020017f726f6c6c65646261636b00000000000000000000000000000000000000000000815250616a95565b15615691576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016156889061a6c7565b60405180910390fd5b6157746000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156157695780601f1061573e57610100808354040283529160200191615769565b820191906000526020600020905b81548152906001019060200180831161574c57829003601f168201915b505050505088616a95565b15156158835784876040516020018083805190602001908083835b6020831015156157b4578051825260208201915060208101905060208303925061578f565b6001836020036101000a0380198251168184511680821785525050505050509050018061a8c56023913960230182805190602001908083835b60208310151561581257805182526020820191506020810190506020830392506157ed565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161587a919061a52d565b60405180910390fd5b61588d87876182a8565b15156158ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016158c59061a667565b60405180910390fd5b60c0604051908101604052806158e332616524565b81526020016103e8428115156158f557fe5b0481526020018681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481525060026159338989617bce565b6040518082805190602001908083835b6020831015156159685780518252602082019150602081019050602083039250615943565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060008201518160000190805190602001906159b7929190619567565b506020820151816001015560408201518160020190805190602001906159de929190619567565b5060608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816004019080519060200190615a42929190619567565b5060a0820151816005019080519060200190615a5f92919061971e565b5090505060006001886040518082805190602001908083835b602083101515615a9d5780518252602082019150602081019050602083039250615a78565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600801549050866001896040518082805190602001908083835b602083101515615b0f5780518252602082019150602081019050602083039250615aea565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060070182815481101515615b5257fe5b9060005260206000200181905550600181016001896040518082805190602001908083835b602083101515615b9c5780518252602082019150602081019050602083039250615b77565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600801819055506060615be3838787618010565b905060408051908101604052806001151581526020018281525060078b6040518082805190602001908083835b602083101515615c355780518252602082019150602081019050602083039250615c10565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001019080519060200190615ca492919061971e565b509050508093505050505b9695505050505050565b60606004546003541415615d04576040805190810160405280600481526020017f6e756c6c000000000000000000000000000000000000000000000000000000008152509050615dbb565b6005600354815481101515615d1557fe5b906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015615db35780601f10615d8857610100808354040283529160200191615db3565b820191906000526020600020905b815481529060010190602001808311615d9657829003601f168201915b505050505090505b90565b6060806004546003541415615e0b576040805190810160405280600281526020017f7b7d000000000000000000000000000000000000000000000000000000000000815250915050615ece565b6005600354815481101515615e1c57fe5b906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015615eba5780601f10615e8f57610100808354040283529160200191615eba565b820191906000526020600020905b815481529060010190602001808311615e9d57829003601f168201915b50505050509050615eca81611a17565b9150505b90565b6000600681615ee0919061979e565b50565b6060808290506000815190506000809050600080905060006001840390505b6000811115615ff0577f2e000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168582815181101515615f5c57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000",
        "00000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415615fda57600181019150615ff0565b8280600101935050808060019003915050615f02565b506060826040519080825280601f01601f1916602001820160405280156160265781602001600182028038833980820191505090505b50905060008090505b838110156160e157858380600101945081518110151561604b57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000282828151811015156160a457fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505061602f565b508095505050505050919050565b60006060600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663819a3d62856040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161616a919061a52d565b60006040518083038186803b15801561618257600080fd5b505afa158015616196573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506161bf9190810190619b6b565b90506060819050600081519050600061620d836040805190810160405280600981526020017f22737365726464612200000000000000000000000000000000000000000000008152506183bb565b90506000811415616266578515616259576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016162509061a687565b60405180910390fd5b600094505050505061651e565b6060602a6040519080825280601f01601f19166020018201604052801561629c5781602001600182028038833980820191505090505b509050600080905060008390505b84811015616455577f30000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916868281518110151561630357fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614801561643b57507f78000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191686600183018151811015156163cc57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b1561644857809150616455565b80806001019150506162aa565b5060008090505b602a81101561650b578581830181518110151561647557fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283828151811015156164ce57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505061645c565b50616515826185f1565b96505050505050505b92915050565b60608060286040519080825280601f01601f19166020018201604052801561655b5781602001600182028038833980820191505090505b50905060008090505b60148110156167305760008160130360080260020a8573ffffffffffffffffffffffffffffffffffffffff1681151561659957fe5b047f010000000000000000000000000000000000000000000000000000000000000002905060006010827f0100000000000000000000000000000000000000000000000000000000000000900460ff168115156165f257fe5b047f01000000000000000000000000000000000000000000000000000000000000000290506000817f01000000000000000000000000000000000000000000000000000000000000009004601002837f01000000000000000000000000000000000000000000000000000000000000009004037f010000000000000000000000000000000000000000000000000000000000000002905061669282618a0c565b85856002028151811015156166a357fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506166dc81618a0c565b85600186600202018151811015156166f057fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505050508080600101915050616564565b508060405160200180807f307800000000000000000000000000000000000000000000000000000000000081525060020182805190602001908083835b602083101515616792578051825260208201915060208101905060208303925061676d565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052915050919050565b6060600080831415616818576040805190810160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250915050616893565b5b600083111561688657610100816001900481151561683357fe5b0460010290507f01000000000000000000000000000000000000000000000000000000000000006030600a8581151561686857fe5b06010260010281179050600a8381151561687e57fe5b049250616819565b61688f81618ade565b9150505b919050565b606060008373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831015156168e957805182526020820191506020810190506020830392506168c4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461694b576040519150601f19603f3d011682016040523d82523d6000602084013e616950565b606091505b50809350819250505080151561699d57816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401616994919061a52d565b60405180910390fd5b5092915050565b6000806001836040518082805190602001908083835b6020831015156169df57805182526020820191506020810190506020830392506169ba565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206004015414159050919050565b60006060616a2c83615ee3565b9050616a398160016160ef565b915050919050565b6004600081548092919060010191905055506005819080600181540180825580915050906001820390600052602060002001600090919290919091509080519060200190616a909291906194e7565b505050565b60008180519060200120838051906020012014905092915050565b60006001826040518082805190602001908083835b602083101515616aea5780518252602082019150602081019050602083039250616ac5565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060020180549050905060008090505b81811015616c515760006001846040518082805190602001908083835b602083101515616b6e5780518252602082019150602081019050602083039250616b49565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060020182815481101515616bb157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549060ff0219169055600182016000616c4191906197ca565b5050508080600101915050616b2c565b505050565b606060006001836040518082805190602001908083835b602083101515616c925780518252602082019150602081019050602083039250616c6d565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060010180549050905060606001846040518082805190602001908083835b602083101515616d085780518252602082019150602081019050602083039250616ce3565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206001016000815481101515616d4c57fe5b9060005260206000200160405160200180807f5b2200000000000000000000000000000000000000000000000000000000000081525060020182805460018160011615610100020316600290048015616ddc5780601f10616dba576101008083540402835291820191616ddc565b820191906000526020600020905b815481529060010190602001808311616dc8575b5050807f220000000000000000000000000000000000000000000000000000000000000081525060010191505060405160208183030381529060405290506000600190505b82811015616fd457816001866040518082805190602001908083835b602083101515616e625780518252602082019150602081019050602083039250616e3d565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060010182815481101515616ea557fe5b906000526020600020016040516020018083805190602001908083835b602083101515616ee75780518252602082019150602081019050602083039250616ec2565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c2200000000000000000000000000000000000000000000000000000000000081525060020182805460018160011615610100020316600290048015616f885780601f10616f66576101008083540402835291820191616f88565b820191906000526020600020905b815481529060010190602001808311616f74575b5050807f22000000",
        "000000000000000000000000000000000000000000000000000000008152506001019250505060405160208183030381529060405291508080600101915050616e21565b50806040516020018082805190602001908083835b60208310151561700e5780518252602082019150602081019050602083039250616fe9565b6001836020036101000a038019825116818451168082178552505050505050905001807f5d0000000000000000000000000000000000000000000000000000000000000081525060010191505060405160208183030381529060405292505050919050565b606060008214156170bb576040805190810160405280600281526020017f5b5d0000000000000000000000000000000000000000000000000000000000008152509050617a31565b61745c60026170e2868660008151811015156170d357fe5b90602001906020020151617bce565b6040518082805190602001908083835b60208310151561711757805182526020820191506020810190506020830392506170f2565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060c06040519081016040529081600082018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156171ef5780601f106171c4576101008083540402835291602001916171ef565b820191906000526020600020905b8154815290600101906020018083116171d257829003601f168201915b5050505050815260200160018201548152602001600282018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561729b5780601f106172705761010080835404028352916020019161729b565b820191906000526020600020905b81548152906001019060200180831161727e57829003601f168201915b505050505081526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156173935780601f1061736857610100808354040283529160200191617393565b820191906000526020600020905b81548152906001019060200180831161737657829003601f168201915b50505050508152602001600582018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156174355780601f1061740a57610100808354040283529160200191617435565b820191906000526020600020905b81548152906001019060200180831161741857829003601f168201915b50505050508152505084600081518110151561744d57fe5b90602001906020020151618bb9565b60405160200180807f5b0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b6020831015156174bc5780518252602082019150602081019050602083039250617497565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405290506000600190505b8281101561799857816178a1600261752888888681518110151561751957fe5b90602001906020020151617bce565b6040518082805190602001908083835b60208310151561755d5780518252602082019150602081019050602083039250617538565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060c06040519081016040529081600082018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156176355780601f1061760a57610100808354040283529160200191617635565b820191906000526020600020905b81548152906001019060200180831161761857829003601f168201915b5050505050815260200160018201548152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156176e15780601f106176b6576101008083540402835291602001916176e1565b820191906000526020600020905b8154815290600101906020018083116176c457829003601f168201915b505050505081526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156177d95780601f106177ae576101008083540402835291602001916177d9565b820191906000526020600020905b8154815290600101906020018083116177bc57829003601f168201915b50505050508152602001600582018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561787b5780601f106178505761010080835404028352916020019161787b565b820191906000526020600020905b81548152906001019060200180831161785e57829003601f168201915b505050505081525050868481518110151561789257fe5b90602001906020020151618bb9565b6040516020018083805190602001908083835b6020831015156178d957805182526020820191506020810190506020830392506178b4565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b602083101515617954578051825260208201915060208101905060208303925061792f565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052915080806001019150506174f9565b50806040516020018082805190602001908083835b6020831015156179d257805182526020820191506020810190506020830392506179ad565b6001836020036101000a038019825116818451168082178552505050505050905001807f5d0000000000000000000000000000000000000000000000000000000000000081525060010191505060405160208183030381529060405290505b9392505050565b60606004546003541415617a81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401617a789061a607565b60405180910390fd5b617b3e6005600354815481101515617a9557fe5b906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015617b335780601f10617b0857610100808354040283529160200191617b33565b820191906000526020600020905b815481529060010190602001808311617b1657829003601f168201915b505050505083616a95565b1515617b7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401617b769061a6a7565b60405180910390fd5b6003600081548092919060010191905055506040805190810160405280600781526020017f73756363657373000000000000000000000000000000000000000000000000008152509050919050565b606082617bda836167ce565b6040516020018083805190602001908083835b602083101515617c125780518252602082019150602081019050602083039250617bed565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b602083101515617c655780518252602082019150602081019050602083039250617c40565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905092915050565b606080839050606083905060008251905060008251905060608183016040519080825280601f01601f191660200182016040528015617cf05781602001600182028038833980820191505090505b50905060007f280000000000000000000000000000000000000000000000000000000000000090506000809050600080905060008090505b86811015617e8c57837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168982815181101515617d6157fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515617e77578881815181101515617de357fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000028584806001019550815181101515617e4257fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350617e7f565b809150617e8c565b8080600101915050617d28565b5060008090505b85811015617f45578781815181101515617ea957fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000028584806001019550815181101515617f0857fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050617e93565b5060008190505b86811015617ffe578881815181101515617f6257fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000",
        "00000000000000000000000000000000000000000000000000000000028584806001019550815181101515617fc157fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050617f4c565b50839850505050505050505092915050565b60608083604051602401604051602081830303815290604052906040518082805190602001908083835b60208310151561805f578051825260208201915060208101905060208303925061803a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060008573ffffffffffffffffffffffffffffffffffffffff1682856040516020018083805190602001908083835b60208310151561812e5780518252602082019150602081019050602083039250618109565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b602083101515618181578051825260208201915060208101905060208303925061815c565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b6020831015156181eb57805182526020820191506020810190506020830392506181c6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461824d576040519150601f19603f3d011682016040523d82523d6000602084013e618252565b606091505b50809450819250505080151561829f57826040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401618296919061a52d565b60405180910390fd5b50509392505050565b6000806001846040518082805190602001908083835b6020831015156182e357805182526020820191506020810190506020830392506182be565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060080154905060008114806183b257506001846040518082805190602001908083835b60208310151561835e5780518252602082019150602081019050602083039250618339565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600701600182038154811015156183a457fe5b906000526020600020015483115b91505092915050565b600080835190506000835190506183d0619812565b610120604051908101604052807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000b81526020016000800b81526020016000800b81526020016000800b81526020016000800b81526020016000800b81526020016000800b81526020016000800b81526020016000800b8152509050600083905060008090505b60008213801561846857508381125b156185ca577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811480618591575086818151811015156184a457fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916886001840381518110151561852257fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156185ac5781806001900392505080806001019150506185c5565b82816009811015156185ba57fe5b602002015160000b90505b618459565b838114156185e157838201955050505050506185eb565b6000955050505050505b92915050565b6000602a82511415156186f7578160405160200180807f63616e6e6f7420636f7665727420000000000000000000000000000000000000815250600e0182805190602001908083835b60208310151561865f578051825260208201915060208101905060208303925061863a565b6001836020036101000a038019825116818451168082178552505050505050905001807f746f2062636f7320616464726573730000000000000000000000000000000000815250600f019150506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016186ee919061a52d565b60405180910390fd5b60008090506000806000600290505b602a811015618a005761010084029350858181518110151561872457fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900460ff16925085600182018151811015156187a857fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900460ff16915060618373ffffffffffffffffffffffffffffffffffffffff1610158015618859575060668373ffffffffffffffffffffffffffffffffffffffff1611155b1561886957605783039250618903565b60418373ffffffffffffffffffffffffffffffffffffffff16101580156188a7575060468373ffffffffffffffffffffffffffffffffffffffff1611155b156188b757603783039250618902565b60308373ffffffffffffffffffffffffffffffffffffffff16101580156188f5575060398373ffffffffffffffffffffffffffffffffffffffff1611155b15618901576030830392505b5b5b60618273ffffffffffffffffffffffffffffffffffffffff1610158015618941575060668273ffffffffffffffffffffffffffffffffffffffff1611155b15618951576057820391506189eb565b60418273ffffffffffffffffffffffffffffffffffffffff161015801561898f575060468273ffffffffffffffffffffffffffffffffffffffff1611155b1561899f576037820391506189ea565b60308273ffffffffffffffffffffffffffffffffffffffff16101580156189dd575060398273ffffffffffffffffffffffffffffffffffffffff1611155b156189e9576030820391505b5b5b81601084020184019350600281019050618706565b50829350505050919050565b6000600a827f0100000000000000000000000000000000000000000000000000000000000000900460ff161015618a8d576030827f01000000000000000000000000000000000000000000000000000000000000009004017f0100000000000000000000000000000000000000000000000000000000000000029050618ad9565b6057827f01000000000000000000000000000000000000000000000000000000000000009004017f01000000000000000000000000000000000000000000000000000000000000000290505b919050565b606080602060ff166040519080825280601f01601f191660200182016040528015618b185781602001600182028038833980820191505090505b5090506000602060ff16905060008090505b81811015618bae578481602081101515618b4057fe5b1a7f0100000000000000000000000000000000000000000000000000000000000000028382815181101515618b7157fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050618b2a565b508192505050919050565b6060618bc4826167ce565b83600001518460400151618bdb86602001516167ce565b618be88760800151618fed565b618bf58860a001516192bc565b60405160200180807f7b2278615472616e73616374696f6e536571223a00000000000000000000000081525060140187805190602001908083835b602083101515618c555780518252602082019150602081019050602083039250618c30565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f226163636f756e744964656e74697479223a220000000000000000000000000081525060130186805190602001908083835b602083101515618cf85780518252602082019150602081019050602083039250618cd3565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f2270617468223a2200000000000000000000000000000000000000000000000081525060080185805190602001908083835b602083101515618d9b5780518252602082019150602081019050602083039250618d76565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f2274696d657374616d70223a0000000000000000000000000000000000000000815250600c0184805190602001908083835b602083101515618e3e5780518252602082019150602081019050602083039250618e19565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f226d6574686f64223a2200000000000000000000000000000000000000000000815250600a0183805190602001908083835b602083101515618ee15780518252602082019150602081019050602083039250618ebc565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f2261726773223a2200000000000000000000000000000000000000000000000081525060080182805190602001908083835b602083101515618f845780518252602082019150602081019050602083039250618f5f565b6001836020036101000a0380",
        "19825116818451168082178552505050505050905001807f227d0000000000000000000000000000000000000000000000000000000000008152506002019650505050505050604051602081830303815290604052905092915050565b6060808290506000815190506060816040519080825280601f01601f19166020018201604052801561902e5781602001600182028038833980820191505090505b50905060007f28000000000000000000000000000000000000000000000000000000000000009050600080905060008090505b848110156191c257827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916868281518110151561909a57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415156191b057858181518110151561911c57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002848380600101945081518110151561917b57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506191b5565b6191c2565b8080600101915050619061565b506060816040519080825280601f01601f1916602001820160405280156191f85781602001600182028038833980820191505090505b50905060008090505b828110156192ad57848181518110151561921757fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002828281518110151561927057fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050619201565b50809650505050505050919050565b60606000825190506060600282026040519080825280601f01601f1916602001820160405280156192fc5781602001600182028038833980820191505090505b50905060008090505b828110156194dc576000858281518110151561931d57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002905060006010827f0100000000000000000000000000000000000000000000000000000000000000900460ff1681151561939e57fe5b047f01000000000000000000000000000000000000000000000000000000000000000290506000817f01000000000000000000000000000000000000000000000000000000000000009004601002837f01000000000000000000000000000000000000000000000000000000000000009004037f010000000000000000000000000000000000000000000000000000000000000002905061943e82618a0c565b856002860281518110151561944f57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061948881618a0c565b856001600287020181518110151561949c57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505050508080600101915050619305565b508092505050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061952857805160ff1916838001178555619556565b82800160010185558215619556579182015b8281111561955557825182559160200191906001019061953a565b5b5090506195639190619836565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106195a857805160ff19168380011785556195d6565b828001600101855582156195d6579182015b828111156195d55782518255916020019190600101906195ba565b5b5090506195e39190619836565b5090565b828054828255906000526020600020908101928215619636579160200282015b82811115619635578251829080519060200190619625929190619567565b5091602001919060010190619607565b5b509050619643919061985b565b5090565b8280548282559060005260206000209081019282156196c0579160200282015b828111156196bf5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190619667565b5b5090506196cd9190619887565b5090565b82805482825590600052602060002090810192821561970d579160200282015b8281111561970c5782518255916020019190600101906196f1565b5b50905061971a9190619836565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061975f57805160ff191683800117855561978d565b8280016001018555821561978d579182015b8281111561978c578251825591602001919060010190619771565b5b50905061979a9190619836565b5090565b8154818355818111156197c5578183600052602060002091820191016197c4919061985b565b5b505050565b50805460018160011615610100020316600290046000825580601f106197f0575061980f565b601f01602090049060005260206000209081019061980e9190619836565b5b50565b61012060405190810160405280600990602082028038833980820191505090505090565b61985891905b8082111561985457600081600090555060010161983c565b5090565b90565b61988491905b80821115619880576000818161987791906197ca565b50600101619861565b5090565b90565b6198c791905b808211156198c357600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161988d565b5090565b90565b600082601f83011215156198dd57600080fd5b81356198f06198eb8261a72f565b61a702565b9150818183526020840193506020810190508360005b83811015619936578135860161991c88826199aa565b845260208401935060208301925050600181019050619906565b5050505092915050565b600082601f830112151561995357600080fd5b81356199666199618261a757565b61a702565b9150808252602083016020830185838301111561998257600080fd5b61998d83828461a871565b50505092915050565b60006199a2825161a85d565b905092915050565b600082601f83011215156199bd57600080fd5b81356199d06199cb8261a783565b61a702565b915080825260208301602083018583830111156199ec57600080fd5b6199f783828461a871565b50505092915050565b600082601f8301121515619a1357600080fd5b8135619a26619a218261a7af565b61a702565b91508082526020830160208301858383011115619a4257600080fd5b619a4d83828461a871565b50505092915050565b600082601f8301121515619a6957600080fd5b8151619a7c619a778261a7af565b61a702565b91508082526020830160208301858383011115619a9857600080fd5b619aa383828461a880565b50505092915050565b6000619ab8823561a867565b905092915050565b600060208284031215619ad257600080fd5b600082013567ffffffffffffffff811115619aec57600080fd5b619af884828501619940565b91505092915050565b600060208284031215619b1357600080fd5b6000619b2184828501619996565b91505092915050565b600060208284031215619b3c57600080fd5b600082013567ffffffffffffffff811115619b5657600080fd5b619b6284828501619a00565b91505092915050565b600060208284031215619b7d57600080fd5b600082015167ffffffffffffffff811115619b9757600080fd5b619ba384828501619a56565b91505092915050565b600080600060608486031215619bc157600080fd5b600084013567ffffffffffffffff811115619bdb57600080fd5b619be786828701619a00565b935050602084013567ffffffffffffffff811115619c0457600080fd5b619c10868287016198ca565b925050604084013567ffffffffffffffff811115619c2d57600080fd5b619c39868287016198ca565b9150509250925092565b60008060408385031215619c5657600080fd5b600083013567ffffffffffffffff811115619c7057600080fd5b619c7c85828601619a00565b925050602083013567ffffffffffffffff811115619c9957600080fd5b619ca585828601619940565b9150509250929050565b60008060408385031215619cc257600080fd5b600083013567ffffffffffffffff811115619cdc57600080fd5b619ce885828601619a00565b925050602083013567ffffffffffffffff811115619d0557600080fd5b619d1185828601619a00565b9150509250929050565b600080600060608486031215619d3057600080fd5b600084013567ffffffffffffffff811115619d4a57600080fd5b619d5686828701619a00565b935050602084013567ffffffffffffffff811115619d7357600080fd5b619d7f86828701619a00565b925050604084013567ffffffffffffffff811115619d9c57600080fd5b619da886828701619940565b9150509250925092565b60008060008060808587031215619dc857600080fd5b600085013567ffffffffffffffff811115619de257600080fd5b619dee87828801619a00565b945050602085013567ffffffffffffffff811115619e0b57600080fd5b619e1787828801619a00565b935050604085013567ffffffffffffffff811115619e3457600080fd5b619e4087828801619940565b925050606085013567ffffffffffffffff811115619e5d57600080fd5b619e6987828801619a00565b91505092959194509250565b60008060008060808587031215619e8b57600080fd5b600085013567ffffffffffffffff811115619ea557600080fd5b619eb187828801619a00565b945050602085013567ffffffffffffffff811115619ece57600080fd5b619eda87828801619a00565b935050604085013567ffffffffffffffff811115619ef757600080fd5b619f0387828801619a00565b925050606085013567ffffffffffffffff811115619f2057600080fd5b619f2c87828801619940565b91505092959194509250565b60008060008060808587031215619f4e57600080fd5b600085013567ffffffffffffffff811115619f6857600080fd5b619f7487828801619a00565b945050602085013567ffffffffffffffff811115619f9157600080fd",
        "5b619f9d87828801619a00565b935050604085013567ffffffffffffffff811115619fba57600080fd5b619fc687828801619a00565b925050606085013567ffffffffffffffff811115619fe357600080fd5b619fef87828801619a00565b91505092959194509250565b60008060008060008060c0878903121561a01457600080fd5b600087013567ffffffffffffffff81111561a02e57600080fd5b61a03a89828a01619a00565b965050602087013567ffffffffffffffff81111561a05757600080fd5b61a06389828a01619a00565b955050604061a07489828a01619aac565b945050606087013567ffffffffffffffff81111561a09157600080fd5b61a09d89828a01619a00565b935050608087013567ffffffffffffffff81111561a0ba57600080fd5b61a0c689828a01619a00565b92505060a087013567ffffffffffffffff81111561a0e357600080fd5b61a0ef89828a01619940565b9150509295509295509295565b6000806040838503121561a10f57600080fd5b600083013567ffffffffffffffff81111561a12957600080fd5b61a13585828601619a00565b925050602061a14685828601619aac565b9150509250929050565b61a1598161a821565b82525050565b600061a16a8261a7e8565b8084526020840193508360208202850161a1838561a7db565b60005b8481101561a1bc57838303885261a19e83835161a239565b925061a1a98261a814565b915060208801975060018101905061a186565b508196508694505050505092915050565b600061a1d88261a7f3565b80845261a1ec81602086016020860161a880565b61a1f58161a8b3565b602085010191505092915050565b600061a20e8261a809565b80845261a22281602086016020860161a880565b61a22b8161a8b3565b602085010191505092915050565b600061a2448261a7fe565b80845261a25881602086016020860161a880565b61a2618161a8b3565b602085010191505092915050565b6000602182527f7861207472616e73616374696f6e20686173206265656e20636f6d6d6974746560208301527f64000000000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000602182527f64656c657465206e6f6e6578697374656e74207861207472616e73616374696f60208301527f6e000000000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000601682527f6465706c6f7920636f6e7472616374206661696c6564000000000000000000006020830152604082019050919050565b6000601882527f7861207472616e73616374696f6e206e6f7420666f756e6400000000000000006020830152604082019050919050565b6000602182527f7365712073686f756c642062652067726561746572207468616e206265666f7260208301527f65000000000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000601d82527f746865206e616d6527732061646472657373206e6f742065786973742e0000006020830152604082019050919050565b6000601f82527f64656c65746520756e6d617463686564207861207472616e73616374696f6e006020830152604082019050919050565b6000602282527f7861207472616e73616374696f6e20686173206265656e20726f6c6c6564626160208301527f636b0000000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b61a4c88161a853565b82525050565b600060208201905061a4e3600083018461a150565b92915050565b6000602082019050818103600083015261a503818461a15f565b905092915050565b6000602082019050818103600083015261a525818461a1cd565b905092915050565b6000602082019050818103600083015261a547818461a203565b905092915050565b6000604082019050818103600083015261a569818561a203565b9050818103602083015261a57d818461a203565b90509392505050565b6000608082019050818103600083015261a5a0818761a203565b9050818103602083015261a5b4818661a203565b9050818103604083015261a5c8818561a203565b9050818103606083015261a5dc818461a203565b905095945050505050565b6000602082019050818103600083015261a6008161a26f565b9050919050565b6000602082019050818103600083015261a6208161a2cc565b9050919050565b6000602082019050818103600083015261a6408161a329565b9050919050565b6000602082019050818103600083015261a6608161a360565b9050919050565b6000602082019050818103600083015261a6808161a397565b9050919050565b6000602082019050818103600083015261a6a08161a3f4565b9050919050565b6000602082019050818103600083015261a6c08161a42b565b9050919050565b6000602082019050818103600083015261a6e08161a462565b9050919050565b600060208201905061a6fc600083018461a4bf565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561a72557600080fd5b8060405250919050565b600067ffffffffffffffff82111561a74657600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561a76e57600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111561a79a57600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111561a7c657600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600061a82c8261a833565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000819050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561a89e57808201518184015260208101905061a883565b8381111561a8ad576000848401525b50505050565b6000601f19601f830116905091905056fe20697320756e7265676973746572656420696e207861207472616e73616374696f6e20206973206c6f636b656420627920756e66696e6973686564207861207472616e73616374696f6e3a207265736f75726365206973206c6f636b656420627920756e66696e6973686564207861207472616e73616374696f6e3a2020697320756e7265676973746572656420696e207861207472616e73616374696f6e3a20a265627a7a72305820656fbd241b65dbe33dff6544456a0abb6ba586fc6b959a3f5b79567707e56f016c6578706572696d656e74616cf50037"
    };

    public static final String BINARY =
            org.fisco.bcos.sdk.utils.StringUtils.joinAll("", BINARY_ARRAY);

    public static final String[] SM_BINARY_ARRAY = {
        "6080604052600060035560006004553480156200001b57600080fd5b50611004600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061a99f806200006f6000396000f3fe608060405260043610610168576000357c01000000000000000000000000000000000000000000000000000000009004806378e911d7116100d3578063a4b228f61161008c578063a4b228f61461055b578063ad316e5814610584578063c2168275146105ad578063cd7b60c1146105ea578063ec72a42214610615578063ecb905ca1461065257610168565b806378e911d7146103ff57806383fd80471461043c57806389eca872146104795780639b194dec146104a45780639b977529146104e15780639f8d3c041461051e57610168565b80633ffacda2116101255780633ffacda2146102b7578063418b2f87146102f45780634f174c2b146103315780635f44bbcf1461036e5780636b6fbfd3146103ab57806372ecef51146103c257610168565b8063078af4af1461016d5780630acea502146101aa5780631b9c3fbd146101d557806322f86c091461021257806327328b4b1461024f5780632e185ec61461027a575b600080fd5b34801561017957600080fd5b50610194600480360361018f9190810190619b2a565b61067d565b6040516101a1919061a52d565b60405180910390f35b3480156101b657600080fd5b506101bf610752565b6040516101cc919061a52d565b60405180910390f35b3480156101e157600080fd5b506101fc60048036036101f79190810190619b2a565b6107b3565b604051610209919061a52d565b60405180910390f35b34801561021e57600080fd5b5061023960048036036102349190810190619d1b565b6107cf565b604051610246919061a50b565b60405180910390f35b34801561025b57600080fd5b50610264610bf0565b604051610271919061a52d565b60405180910390f35b34801561028657600080fd5b506102a1600480360361029c9190810190619b2a565b610d03565b6040516102ae919061a6e7565b60405180910390f35b3480156102c357600080fd5b506102de60048036036102d99190810190619b2a565b610ed9565b6040516102eb919061a52d565b60405180910390f35b34801561030057600080fd5b5061031b60048036036103169190810190619b2a565b6113ad565b604051610328919061a52d565b60405180910390f35b34801561033d57600080fd5b5061035860048036036103539190810190619db2565b612042565b604051610365919061a4ce565b60405180910390f35b34801561037a57600080fd5b5061039560048036036103909190810190619e75565b612539565b6040516103a2919061a50b565b60405180910390f35b3480156103b757600080fd5b506103c061279a565b005b3480156103ce57600080fd5b506103e960048036036103e49190810190619ffb565b6127ac565b6040516103f6919061a50b565b60405180910390f35b34801561040b57600080fd5b5061042660048036036104219190810190619ac0565b6132c6565b604051610433919061a4ce565b60405180910390f35b34801561044857600080fd5b50610463600480360361045e9190810190619b2a565b613327565b604051610470919061a52d565b60405180910390f35b34801561048557600080fd5b5061048e6136b4565b60405161049b919061a4e9565b60405180910390f35b3480156104b057600080fd5b506104cb60048036036104c69190810190619bac565b61379d565b6040516104d8919061a52d565b60405180910390f35b3480156104ed57600080fd5b5061050860048036036105039190810190619c43565b613ed4565b604051610515919061a50b565b60405180910390f35b34801561052a57600080fd5b5061054560048036036105409190810190619b2a565b614046565b604051610552919061a52d565b60405180910390f35b34801561056757600080fd5b50610582600480360361057d9190810190619b2a565b61495d565b005b34801561059057600080fd5b506105ab60048036036105a69190810190619f38565b61499f565b005b3480156105b957600080fd5b506105d460048036036105cf919081019061a0fc565b614e79565b6040516105e1919061a52d565b60405180910390f35b3480156105f657600080fd5b506105ff615cc9565b60405161060c919061a52d565b60405180910390f35b34801561062157600080fd5b5061063c60048036036106379190810190619caf565b615dce565b604051610649919061a52d565b60405180910390f35b34801561065e57600080fd5b50610667615ea6565b604051610674919061a52d565b60405180910390f35b6060600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663078af4af836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016106f6919061a52d565b60006040518083038186803b15801561070e57600080fd5b505afa158015610722573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061074b9190810190619b6b565b9050919050565b60606000600580549050141561079f576040805190810160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506107b0565b6107ad600580549050615ee3565b90505b90565b60606107be826113ad565b506107c882615fad565b9050919050565b60606007846040518082805190602001908083835b60208310151561080957805182526020820191506020810190506020830392506107e4565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000160009054906101000a900460ff1615610960576007846040518082805190602001908083835b60208310151561088a5780518252602082019150602081019050602083039250610865565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109545780601f1061092957610100808354040283529160200191610954565b820191906000526020600020905b81548152906001019060200180831161093757829003601f168201915b50505050509050610be9565b600061096d846001616143565b90506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615610b1257836000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016040516020018083805190602001908083835b602083101515610a3d5780518252602082019150602081019050602083039250610a18565b6001836020036101000a0380198251168184511680821785525050505050509050018061a8f66029913960290182805460018160011615610100020316600290048015610ac15780601f10610a9f576101008083540402835291820191610ac1565b820191906000526020600020905b815481529060010190602001808311610aad575b5050925050506040516020818303038152906040526040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401610b09919061a52d565b60405180910390fd5b6060610b1e8285616578565b90506040805190810160405280600115158152602001828152506007876040518082805190602001908083835b602083101515610b705780518252602082019150602081019050602083039250610b4b565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001019080519060200190610bdf9291906194e7565b5090505080925050505b9392505050565b6060806004546003541415610c3d576040805190810160405280600281526020017f7b7d000000000000000000000000000000000000000000000000000000000000815250915050610d00565b6005600354815481101515610c4e57fe5b906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cec5780601f10610cc157610100808354040283529160200191610cec565b820191906000526020600020905b815481529060010190602001808311610ccf57829003601f168201915b50505050509050610cfc81614046565b9150505b90565b60006060829050600080905060008251905060008090505b81811015610ecd5760308482815181101515610d3357fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900460ff1610158015610e31575060398482815181101515610dbd57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900460ff1611155b15610ec05760308482815181101515610e4657fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f010000000000000000000000000000000000000000000000000000000000000090040360ff16600a84020192505b8080600101915050610d1b565b50819350505050919050565b6060610ee482616684565b1515610f25576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401610f1c9061a5e7565b60405180910390fd5b61106a6001836040518082805190602001908083835b602083101515610f605780518252602082019150602081019050602083039250610f3b565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091",
        "0390206003018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561102a5780601f10610fff5761010080835404028352916020019161102a565b820191906000526020600020905b81548152906001019060200180831161100d57829003601f168201915b50505050506040805190810160405280600981526020017f636f6d6d697474656400000000000000000000000000000000000000000000008152506166ff565b156110aa576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016110a19061a647565b60405180910390fd5b6111ef6001836040518082805190602001908083835b6020831015156110e557805182526020820191506020810190506020830392506110c0565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206003018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111af5780601f10611184576101008083540402835291602001916111af565b820191906000526020600020905b81548152906001019060200180831161119257829003601f168201915b50505050506040805190810160405280600a81526020017f726f6c6c65646261636b000000000000000000000000000000000000000000008152506166ff565b1561122f576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016112269061a667565b60405180910390fd5b6103e84281151561123c57fe5b046001836040518082805190602001908083835b6020831015156112755780518252602082019150602081019050602083039250611250565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600501819055506040805190810160405280600981526020017f636f6d6d697474656400000000000000000000000000000000000000000000008152506001836040518082805190602001908083835b60208310151561131d57805182526020820191506020810190506020830392506112f8565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206003019080519060200190611366929190619567565b506113708261671a565b6040805190810160405280600781526020017f73756363657373000000000000000000000000000000000000000000000000008152509050919050565b6060806040805190810160405280600781526020017f737563636573730000000000000000000000000000000000000000000000000081525090506113f183616684565b1515611432576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016114299061a5e7565b60405180910390fd5b6115776001846040518082805190602001908083835b60208310151561146d5780518252602082019150602081019050602083039250611448565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206003018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115375780601f1061150c57610100808354040283529160200191611537565b820191906000526020600020905b81548152906001019060200180831161151a57829003601f168201915b50505050506040805190810160405280600981526020017f636f6d6d697474656400000000000000000000000000000000000000000000008152506166ff565b156115b7576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016115ae9061a647565b60405180910390fd5b6116fc6001846040518082805190602001908083835b6020831015156115f257805182526020820191506020810190506020830392506115cd565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206003018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116bc5780601f10611691576101008083540402835291602001916116bc565b820191906000526020600020905b81548152906001019060200180831161169f57829003601f168201915b50505050506040805190810160405280600a81526020017f726f6c6c65646261636b000000000000000000000000000000000000000000008152506166ff565b1561173c576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016117339061a667565b60405180910390fd5b60606040805190810160405280600881526020017f7761726e696e673a000000000000000000000000000000000000000000000000815250905060006001856040518082805190602001908083835b6020831015156117b0578051825260208201915060208101905060208303925061178b565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060080154905060008190505b6000811115611ef55760006001876040518082805190602001908083835b602083101515611832578051825260208201915060208101905060208303925061180d565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206007016001830381548110151561187857fe5b90600052602060002001549050606061189188836168c0565b905060606002826040518082805190602001908083835b6020831015156118cd57805182526020820191506020810190506020830392506118a8565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206004018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119975780601f1061196c57610100808354040283529160200191611997565b820191906000526020600020905b81548152906001019060200180831161197a57829003601f168201915b5050505050905060006002836040518082805190602001908083835b6020831015156119d857805182526020820191506020810190506020830392506119b3565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060606002846040518082805190602001908083835b602083101515611a6b5780518252602082019150602081019050602083039250611a46565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206005018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b355780601f10611b0a57610100808354040283529160200191611b35565b820191906000526020600020905b815481529060010190602001808311611b1857829003601f168201915b505050505090506060611b7d846040805190810160405280600781526020017f5f72657665727400000000000000000000000000000000000000000000000000815250616994565b604051602401604051602081830303815290604052906040518082805190602001908083835b602083101515611bc85780518252602082019150602081019050602083039250611ba3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060008373ffffffffffffffffffffffffffffffffffffffff1682846040516020018083805190602001908083835b602083101515611c975780518252602082019150602081019050602083039250611c72565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b602083101515611cea5780518252602082019150602081019050602083039250611cc5565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b602083101515611d545780518252602082019150602081019050602083039250611d2f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611db6576040519150601f19603f3d011682016040523d82523d6000602084013e611dbb565b606091505b505080915050801515611ee05789856040516020018083805190602001908083835b602083101515611e025780518252602082019150602081019050602083039250611ddd565b6001836020036101000a038019825116818451168082178552505050505050905001807f207265766572742022000000000000000000000000000000000000000000000081525060090182805190602001908083835b602083101515611e7d5780518252602082019150602081019050602083039250611e58565b6001836020036101000a038019825116818451168082178552505050505050905001807f22206661696c65642e0000000000000000000000000000000000000000000000815250600901925050506040516020818303038152906040529950899a505b505050505050508080600190039150506117ef565b506103e842811515611f0357fe5b046001866040518082805190602001908083835b602083101515611f3c5780518252602082019150602081019050602083039250611f17565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600601819055506040805190810160405280600a81526020017f726f6c6c656462",
        "61636b000000000000000000000000000000000000000000008152506001866040518082805190602001908083835b602083101515611fe45780518252602082019150602081019050602083039250611fbf565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600301908051906020019061202d929190619567565b506120378561671a565b829350505050919050565b6000606061204f86616d02565b9050600061205e826000616143565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156120e857506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff165b1561223c57816000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016040516020018083805190602001908083835b6020831015156121675780518252602082019150602081019050602083039250612142565b6001836020036101000a0380198251168184511680821785525050505050509050018061a8f660299139602901828054600181600116156101000203166002900480156121eb5780601f106121c95761010080835404028352918201916121eb565b820191906000526020600020905b8154815290600101906020018083116121d7575b5050925050506040516020818303038152906040526040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401612233919061a52d565b60405180910390fd5b6000612247866132c6565b90506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b8eaa08d858a61229486616f0e565b8a6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016122d0949392919061a586565b602060405180830381600087803b1580156122ea57600080fd5b505af11580156122fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123229190810190619b01565b90508060011415156124eb57838861234b600084136123445783600003612346565b835b615ee3565b6040516020018084805190602001908083835b602083101515612383578051825260208201915060208101905060208303925061235e565b6001836020036101000a038019825116818451168082178552505050505050905001807f3a0000000000000000000000000000000000000000000000000000000000000081525060010183805190602001908083835b6020831015156123fe57805182526020820191506020810190506020830392506123d9565b6001836020036101000a038019825116818451168082178552505050505050905001807f20756e61626c6520726567697374657220746f20636e732c206572726f723a2081525060200182805190602001908083835b6020831015156124795780518252602082019150602081019050602083039250612454565b6001836020036101000a03801982511681845116808217855250505050505090500193505050506040516020818303038152906040526040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016124e2919061a52d565b60405180910390fd5b6006899080600181540180825580915050906001820390600052602060002001600090919290919091509080519060200190612528929190619567565b505081945050505050949350505050565b60606000612546856171b8565b905061255186616684565b1515612592576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016125899061a5e7565b60405180910390fd5b6126756000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561266a5780601f1061263f5761010080835404028352916020019161266a565b820191906000526020600020905b81548152906001019060200180831161264d57829003601f168201915b5050505050876166ff565b15156127845784866040516020018083805190602001908083835b6020831015156126b55780518252602082019150602081019050602083039250612690565b6001836020036101000a0380198251168184511680821785525050505050509050018061a9426024913960240182805190602001908083835b60208310151561271357805182526020820191506020810190506020830392506126ee565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040161277b919061a52d565b60405180910390fd5b61278f8185856171da565b915050949350505050565b60006006816127a991906195e7565b50565b60606007876040518082805190602001908083835b6020831015156127e657805182526020820191506020810190506020830392506127c1565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000160009054906101000a900460ff161561293d576007876040518082805190602001908083835b6020831015156128675780518252602082019150602081019050602083039250612842565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156129315780601f1061290657610100808354040283529160200191612931565b820191906000526020600020905b81548152906001019060200180831161291457829003601f168201915b505050505090506132bc565b6000612948856171b8565b905061295387616684565b1515612994576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040161298b9061a5e7565b60405180910390fd5b612ad96001886040518082805190602001908083835b6020831015156129cf57805182526020820191506020810190506020830392506129aa565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206003018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612a995780601f10612a6e57610100808354040283529160200191612a99565b820191906000526020600020905b815481529060010190602001808311612a7c57829003601f168201915b50505050506040805190810160405280600981526020017f636f6d6d697474656400000000000000000000000000000000000000000000008152506166ff565b15612b19576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401612b109061a647565b60405180910390fd5b612c5e6001886040518082805190602001908083835b602083101515612b545780518252602082019150602081019050602083039250612b2f565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206003018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612c1e5780601f10612bf357610100808354040283529160200191612c1e565b820191906000526020600020905b815481529060010190602001808311612c0157829003601f168201915b50505050506040805190810160405280600a81526020017f726f6c6c65646261636b000000000000000000000000000000000000000000008152506166ff565b15612c9e576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401612c959061a667565b60405180910390fd5b612d816000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612d765780601f10612d4b57610100808354040283529160200191612d76565b820191906000526020600020905b815481529060010190602001808311612d5957829003601f168201915b5050505050886166ff565b1515612e905784876040516020018083805190602001908083835b602083101515612dc15780518252602082019150602081019050602083039250612d9c565b6001836020036101000a0380198251168184511680821785525050505050509050018061a91f6023913960230182805190602001908083835b602083101515612e1f5780518252602082019150602081019050602083039250612dfa565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401612e87919061a52d565b60405180910390fd5b612e9a8787617472565b1515612edb576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401612ed29061a6a7565b60405180910390fd5b60c060405190810160405280612ef032616f0e565b81526020016103e842811515612f0257fe5b0481526020018681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152506002612f4089896168c0565b6040518082805190602001908083835b602083101515612f755780518252602082019150602081019050602083039250612f50565b6001836020036101000a0380198251168184511680821785525050",
        "5050505090500191505090815260200160405180910390206000820151816000019080519060200190612fc4929190619613565b50602082015181600101556040820151816002019080519060200190612feb929190619613565b5060608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550608082015181600401908051906020019061304f929190619613565b5060a082015181600501908051906020019061306c9291906194e7565b5090505060006001886040518082805190602001908083835b6020831015156130aa5780518252602082019150602081019050602083039250613085565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600801549050866001896040518082805190602001908083835b60208310151561311c57805182526020820191506020810190506020830392506130f7565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206007018281548110151561315f57fe5b9060005260206000200181905550600181016001896040518082805190602001908083835b6020831015156131a95780518252602082019150602081019050602083039250613184565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206008018190555060606131f08387876171da565b905060408051908101604052806001151581526020018281525060078b6040518082805190602001908083835b602083101515613242578051825260208201915060208101905060208303925061321d565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060008201518160000160006101000a81548160ff02191690831515021790555060208201518160010190805190602001906132b19291906194e7565b509050508093505050505b9695505050505050565b600080600090508251602084016000f091506000823b119050801515613321576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016133189061a687565b60405180910390fd5b50919050565b60606000613334836171b8565b90506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615156133c9576040805190810160405280600481526020017f6e756c6c000000000000000000000000000000000000000000000000000000008152509150506136af565b60606000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156134a05780601f10613475576101008083540402835291602001916134a0565b820191906000526020600020905b81548152906001019060200180831161348357829003601f168201915b5050505050905060006001826040518082805190602001908083835b6020831015156134e157805182526020820191506020810190506020830392506134bc565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060080154905060008082146135b1576001836040518082805190602001908083835b60208310151561355b5780518252602082019150602081019050602083039250613536565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600701600183038154811015156135a157fe5b90600052602060002001546135b4565b60005b9050826135c082615ee3565b6040516020018083805190602001908083835b6020831015156135f857805182526020820191506020810190506020830392506135d3565b6001836020036101000a038019825116818451168082178552505050505050905001807f200000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b602083101515613673578051825260208201915060208101905060208303925061364e565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529450505050505b919050565b60606006805480602002602001604051908101604052809291908181526020016000905b82821015613794578382906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156137805780601f1061375557610100808354040283529160200191613780565b820191906000526020600020905b81548152906001019060200180831161376357829003601f168201915b5050505050815260200190600101906136d8565b50505050905090565b60606137a884616684565b156138a6578360405160200180807f7861207472616e73616374696f6e200000000000000000000000000000000000815250600f0182805190602001908083835b60208310151561380e57805182526020820191506020810190506020830392506137e9565b6001836020036101000a038019825116818451168082178552505050505050905001807f20616c7265616479206578697374730000000000000000000000000000000000815250600f019150506040516020818303038152906040526040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040161389d919061a52d565b60405180910390fd5b6000835190506000835190506060826040519080825280602002602001820160405280156138e35781602001602082028038833980820191505090505b509050606082840160405190808252806020026020018201604052801561391e57816020015b60608152602001906001900390816139095790505b50905060008090505b84811015613c49576000613951898381518110151561394257fe5b906020019060200201516171b8565b905080848381518110151561396257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615613b58578882815181101515613a0057fe5b906020019060200201516000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016040516020018083805190602001908083835b602083101515613a835780518252602082019150602081019050602083039250613a5e565b6001836020036101000a0380198251168184511680821785525050505050509050018061a8f66029913960290182805460018160011615610100020316600290048015613b075780601f10613ae5576101008083540402835291820191613b07565b820191906000526020600020905b815481529060010190602001808311613af3575b5050925050506040516020818303038152906040526040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401613b4f919061a52d565b60405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff021916908315150217905550896000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001019080519060200190613c07929190619567565b508882815181101515613c1657fe5b906020019060200201518383815181101515613c2e57fe5b90602001906020020181905250508080600101915050613927565b5060008090505b83811015613c9a578681815181101515613c6657fe5b9060200190602002015182828701815181101515613c8057fe5b906020019060200201819052508080600101915050613c50565b506060610400604051908082528060200260200182016040528015613cce5781602001602082028038833980820191505090505b50905061012060405190810160405280613ce732616f0e565b81526020018381526020018481526020016040805190810160405280600a81526020017f70726f63657373696e670000000000000000000000000000000000000000000081525081526020016103e842811515613d4057fe5b0481526020016000815260200160008152602001828152602001600081525060018a6040518082805190602001908083835b602083101515613d975780518252602082019150602081019050602083039250613d72565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206000820151816000019080519060200190613de6929190619613565b506020820151816001019080519060200190613e03929190619693565b506040820151816002019080519060200190613e209291906196f3565b506060820151816003019080519060200190613e3d929190619613565b506080820151816004015560a0820151816005015560c0820151816006015560e0820151816007019080519060200190613e7892919061977d565b506101008201518160080155905050613e9089617585565b6040805190810160405280600781526020017f7375636365737300000000000000000000000000000000000000000000000000815250955050505050509392505050565b60606000613ee3846001616143565b90506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615614033576000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101604051602001808061a8c56031913960310182805460",
        "018160011615610100020316600290048015613fe35780601f10613fc1576101008083540402835291820191613fe3565b820191906000526020600020905b815481529060010190602001808311613fcf575b50509150506040516020818303038152906040526040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040161402a919061a52d565b60405180910390fd5b61403d8184616578565b91505092915050565b606061405182616684565b1515614092576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016140899061a5e7565b60405180910390fd5b816001836040518082805190602001908083835b6020831015156140cb57805182526020820191506020810190506020830392506140a6565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206000016001846040518082805190602001908083835b6020831015156141395780518252602082019150602081019050602083039250614114565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600301614178856175d9565b6141ef6001876040518082805190602001908083835b6020831015156141b3578051825260208201915060208101905060208303925061418e565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060040154615ee3565b6142666001886040518082805190602001908083835b60208310151561422a5780518252602082019150602081019050602083039250614205565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060050154615ee3565b6142dd6001896040518082805190602001908083835b6020831015156142a1578051825260208201915060208101905060208303925061427c565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060060154615ee3565b6144128960018b6040518082805190602001908083835b60208310151561431957805182526020820191506020810190506020830392506142f4565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060070180548060200260200160405190810160405280929190818152602001828054801561439957602002820191906000526020600020905b815481526020019060010190808311614385575b505050505060018c6040518082805190602001908083835b6020831015156143d657805182526020820191506020810190506020830392506143b1565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600801546179f6565b60405160200180807f7b2278615472616e73616374696f6e4944223a2200000000000000000000000081525060140189805190602001908083835b602083101515614472578051825260208201915060208101905060208303925061444d565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f226163636f756e744964656e74697479223a22000000000000000000000000008152506013018880546001816001161561010002031660029004801561453b5780601f1061451957610100808354040283529182019161453b565b820191906000526020600020905b815481529060010190602001808311614527575b5050807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f22737461747573223a2200000000000000000000000000000000000000000000815250600a01878054600181600116156101000203166002900480156145e45780601f106145c25761010080835404028352918201916145e4565b820191906000526020600020905b8154815290600101906020018083116145d0575b5050807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f227061746873223a00000000000000000000000000000000000000000000000081525060080186805190602001908083835b6020831015156146675780518252602082019150602081019050602083039250614642565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f22737461727454696d657374616d70223a00000000000000000000000000000081525060110185805190602001908083835b60208310151561470a57805182526020820191506020810190506020830392506146e5565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f22636f6d6d697454696d657374616d70223a000000000000000000000000000081525060120184805190602001908083835b6020831015156147ad5780518252602082019150602081019050602083039250614788565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f22726f6c6c6261636b54696d657374616d70223a00000000000000000000000081525060140183805190602001908083835b602083101515614850578051825260208201915060208101905060208303925061482b565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f2278615472616e73616374696f6e5374657073223a000000000000000000000081525060150182805190602001908083835b6020831015156148f357805182526020820191506020810190506020830392506148ce565b6001836020036101000a038019825116818451168082178552505050505050905001807f7d00000000000000000000000000000000000000000000000000000000000000815250600101985050505050505050506040516020818303038152906040529050919050565b600681908060018154018082558091505090600182039060005260206000200160009091929091909150908051906020019061499a929190619567565b505050565b60606149aa85616d02565b905060006149b9826000616143565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015614a4357506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff165b15614b9757816000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016040516020018083805190602001908083835b602083101515614ac25780518252602082019150602081019050602083039250614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050018061a8f66029913960290182805460018160011615610100020316600290048015614b465780601f10614b24576101008083540402835291820191614b46565b820191906000526020600020905b815481529060010190602001808311614b32575b5050925050506040516020818303038152906040526040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401614b8e919061a52d565b60405180910390fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b8eaa08d848888886040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401614c16949392919061a586565b602060405180830381600087803b158015614c3057600080fd5b505af1158015614c44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250614c689190810190619b01565b9050806001141515614e31578286614c9160008413614c8a5783600003614c8c565b835b615ee3565b6040516020018084805190602001908083835b602083101515614cc95780518252602082019150602081019050602083039250614ca4565b6001836020036101000a038019825116818451168082178552505050505050905001807f3a0000000000000000000000000000000000000000000000000000000000000081525060010183805190602001908083835b602083101515614d445780518252602082019150602081019050602083039250614d1f565b6001836020036101000a038019825116818451168082178552505050505050905001807f20756e61626c6520726567697374657220746f20636e732c206572726f723a2081525060200182805190602001908083835b602083101515614dbf5780518252602082019150602081019050602083039250614d9a565b6001836020036101000a03801982511681845116808217855250505050505090500193505050506040516020818303038152906040526040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401614e28919061a52d565b60405180910390fd5b6006879080600181540180825580915050906001820390600052602060002001600090919290919091509080519060200190614e6e929190619567565b505050505050505050565b6060600060058054905090506000811415614ecc576040805190810160405280601f81526020017f7b22746f74616c223a302c2278615472616e73616374696f6e73223a5b5d7d00815250915050615cc3565b6000614f0d6040805190810160405280600281526020017f2d31000000000000000000000000000000000000000000000000000000000000815250866166ff565b614f1f57614f1a85610d03565b614f24565b600182035b90508082111515614f6e576040805190810160405280601f81526020017f7b22746f74616c223a302c2278615472616e73616374696f6e73223a5b5d7d0081525092505050615cc3565b60606040805190810160405280600181526020017f5b000000000000000000000000",
        "00000000000000000000000000000000000000815250905060008090505b6001860381108015614fc257506000818403115b156155995760606005828503815481101515614fda57fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156150785780601f1061504d57610100808354040283529160200191615078565b820191906000526020600020905b81548152906001019060200180831161505b57829003601f168201915b5050505050905082816001836040518082805190602001908083835b6020831015156150b95780518252602082019150602081019050602083039250615094565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206000016001846040518082805190602001908083835b6020831015156151275780518252602082019150602081019050602083039250615102565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600301615166856175d9565b6151dd6001876040518082805190602001908083835b6020831015156151a1578051825260208201915060208101905060208303925061517c565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060040154615ee3565b6040516020018087805190602001908083835b60208310151561521557805182526020820191506020810190506020830392506151f0565b6001836020036101000a038019825116818451168082178552505050505050905001807f7b2278615472616e73616374696f6e4944223a2200000000000000000000000081525060140186805190602001908083835b602083101515615290578051825260208201915060208101905060208303925061526b565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f226163636f756e744964656e74697479223a2200000000000000000000000000815250601301858054600181600116156101000203166002900480156153595780601f10615337576101008083540402835291820191615359565b820191906000526020600020905b815481529060010190602001808311615345575b5050807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f22737461747573223a2200000000000000000000000000000000000000000000815250600a01848054600181600116156101000203166002900480156154025780601f106153e0576101008083540402835291820191615402565b820191906000526020600020905b8154815290600101906020018083116153ee575b5050807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f227061746873223a00000000000000000000000000000000000000000000000081525060080183805190602001908083835b6020831015156154855780518252602082019150602081019050602083039250615460565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f2274696d657374616d70223a0000000000000000000000000000000000000000815250600c0182805190602001908083835b6020831015156155285780518252602082019150602081019050602083039250615503565b6001836020036101000a038019825116818451168082178552505050505050905001807f7d2c00000000000000000000000000000000000000000000000000000000000081525060020196505050505050506040516020818303038152906040529250508080600101915050614fae565b506000856001840110156155ae5760006155b5565b8560018401035b905060606005828154811015156155c857fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156156665780601f1061563b57610100808354040283529160200191615666565b820191906000526020600020905b81548152906001019060200180831161564957829003601f168201915b5050505050905082816001836040518082805190602001908083835b6020831015156156a75780518252602082019150602081019050602083039250615682565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206000016001846040518082805190602001908083835b60208310151561571557805182526020820191506020810190506020830392506156f0565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600301615754856175d9565b6157cb6001876040518082805190602001908083835b60208310151561578f578051825260208201915060208101905060208303925061576a565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060040154615ee3565b6040516020018087805190602001908083835b60208310151561580357805182526020820191506020810190506020830392506157de565b6001836020036101000a038019825116818451168082178552505050505050905001807f7b2278615472616e73616374696f6e4944223a2200000000000000000000000081525060140186805190602001908083835b60208310151561587e5780518252602082019150602081019050602083039250615859565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f226163636f756e744964656e74697479223a2200000000000000000000000000815250601301858054600181600116156101000203166002900480156159475780601f10615925576101008083540402835291820191615947565b820191906000526020600020905b815481529060010190602001808311615933575b5050807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f22737461747573223a2200000000000000000000000000000000000000000000815250600a01848054600181600116156101000203166002900480156159f05780601f106159ce5761010080835404028352918201916159f0565b820191906000526020600020905b8154815290600101906020018083116159dc575b5050807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f227061746873223a00000000000000000000000000000000000000000000000081525060080183805190602001908083835b602083101515615a735780518252602082019150602081019050602083039250615a4e565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f2274696d657374616d70223a0000000000000000000000000000000000000000815250600c0182805190602001908083835b602083101515615b165780518252602082019150602081019050602083039250615af1565b6001836020036101000a038019825116818451168082178552505050505050905001807f7d5d00000000000000000000000000000000000000000000000000000000000081525060020196505050505050506040516020818303038152906040529250615b8285615ee3565b8360405160200180807f7b22746f74616c223a000000000000000000000000000000000000000000000081525060090183805190602001908083835b602083101515615be35780518252602082019150602081019050602083039250615bbe565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c2278615472616e73616374696f6e73223a000000000000000000000000000081525060120182805190602001908083835b602083101515615c5e5780518252602082019150602081019050602083039250615c39565b6001836020036101000a038019825116818451168082178552505050505050905001807f7d0000000000000000000000000000000000000000000000000000000000000081525060010192505050604051602081830303815290604052955050505050505b92915050565b60606004546003541415615d14576040805190810160405280600481526020017f6e756c6c000000000000000000000000000000000000000000000000000000008152509050615dcb565b6005600354815481101515615d2557fe5b906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015615dc35780601f10615d9857610100808354040283529160200191615dc3565b820191906000526020600020905b815481529060010190602001808311615da657829003601f168201915b505050505090505b90565b6060600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ec72a42284846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401615e4992919061a54f565b60006040518083038186803b158015615e6157600080fd5b505afa158015615e75573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250615e9e9190810190619b6b565b905092915050565b60606040805190810160405280600681526020017f76312e302e300000000000000000000000000000000000000000000000000000815250905090565b6060600080831415615f2d576040805190810160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250915050615fa8565b5b6000831115615f9b576101008160019004811515615f4857fe5b0460010290507f01000000000000000000000000000000000000000000000000000000000000006030600a85811515615f7d57fe5b06010260010281179050600a83811515615f93",
        "57fe5b049250615f2e565b615fa4816183bb565b9150505b919050565b60606004546003541415615ff6576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401615fed9061a627565b60405180910390fd5b6160b3600560035481548110151561600a57fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156160a85780601f1061607d576101008083540402835291602001916160a8565b820191906000526020600020905b81548152906001019060200180831161608b57829003601f168201915b5050505050836166ff565b15156160f4576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016160eb9061a6c7565b60405180910390fd5b6003600081548092919060010191905055506040805190810160405280600781526020017f73756363657373000000000000000000000000000000000000000000000000008152509050919050565b60006060600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663078af4af856040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016161be919061a52d565b60006040518083038186803b1580156161d657600080fd5b505afa1580156161ea573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506162139190810190619b6b565b905060608190506000815190506000616261836040805190810160405280600981526020017f2273736572646461220000000000000000000000000000000000000000000000815250618496565b905060008114156162ba5785156162ad576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016162a49061a607565b60405180910390fd5b6000945050505050616572565b6060602a6040519080825280601f01601f1916602001820160405280156162f05781602001600182028038833980820191505090505b509050600080905060008390505b848110156164a9577f30000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916868281518110151561635757fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614801561648f57507f78000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001830181518110151561642057fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b1561649c578091506164a9565b80806001019150506162fe565b5060008090505b602a81101561655f57858183018151811015156164c957fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838281518110151561652257fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506164b0565b50616569826186cc565b96505050505050505b92915050565b606060008373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831015156165c957805182526020820191506020810190506020830392506165a4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461662b576040519150601f19603f3d011682016040523d82523d6000602084013e616630565b606091505b50809350819250505080151561667d57816040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401616674919061a52d565b60405180910390fd5b5092915050565b6000806001836040518082805190602001908083835b6020831015156166bf578051825260208201915060208101905060208303925061669a565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206004015414159050919050565b60008180519060200120838051906020012014905092915050565b60006001826040518082805190602001908083835b602083101515616754578051825260208201915060208101905060208303925061672f565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060020180549050905060008090505b818110156168bb5760006001846040518082805190602001908083835b6020831015156167d857805182526020820191506020810190506020830392506167b3565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206002018281548110151561681b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549060ff02191690556001820160006168ab91906197ca565b5050508080600101915050616796565b505050565b6060826168cc83615ee3565b6040516020018083805190602001908083835b60208310151561690457805182526020820191506020810190506020830392506168df565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b6020831015156169575780518252602082019150602081019050602083039250616932565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905092915050565b606080839050606083905060008251905060008251905060608183016040519080825280601f01601f1916602001820160405280156169e25781602001600182028038833980820191505090505b50905060007f280000000000000000000000000000000000000000000000000000000000000090506000809050600080905060008090505b86811015616b7e57837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168982815181101515616a5357fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515616b69578881815181101515616ad557fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000028584806001019550815181101515616b3457fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350616b71565b809150616b7e565b8080600101915050616a1a565b5060008090505b85811015616c37578781815181101515616b9b57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000028584806001019550815181101515616bfa57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050616b85565b5060008190505b86811015616cf0578881815181101515616c5457fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000028584806001019550815181101515616cb357fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050616c3e565b50839850505050505050505092915050565b6060808290506000815190506000809050600080905060006001840390505b6000811115616e0f577f2e000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168582815181101515616d7b57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415616df957600181019150616e0f565b8280600101935050808060019003915050616d21565b506060826040519080825280601f01601f191660200182016040528015616e455781602001600182028038833980820191505090505b50905060008090505b83811015616f00578583806001019450815181101515616e6a57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000028282815181101515616ec357fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050616e4e565b508095505050505050919050565b60608060286040519080825280601f01601f191660200182016040528015616f455781602001600182028038833980820191505090505b50905060008090505b601481101561711a5760008160130360080260020a8573ffffffffffffffffffffffffffffffffffffffff16811515616f8357fe5b047f0100000000000000000000",
        "00000000000000000000000000000000000000000002905060006010827f0100000000000000000000000000000000000000000000000000000000000000900460ff16811515616fdc57fe5b047f01000000000000000000000000000000000000000000000000000000000000000290506000817f01000000000000000000000000000000000000000000000000000000000000009004601002837f01000000000000000000000000000000000000000000000000000000000000009004037f010000000000000000000000000000000000000000000000000000000000000002905061707c82618ae7565b858560020281518110151561708d57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506170c681618ae7565b85600186600202018151811015156170da57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505050508080600101915050616f4e565b508060405160200180807f307800000000000000000000000000000000000000000000000000000000000081525060020182805190602001908083835b60208310151561717c5780518252602082019150602081019050602083039250617157565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052915050919050565b600060606171c583616d02565b90506171d2816001616143565b915050919050565b60608083604051602401604051602081830303815290604052906040518082805190602001908083835b6020831015156172295780518252602082019150602081019050602083039250617204565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060008573ffffffffffffffffffffffffffffffffffffffff1682856040516020018083805190602001908083835b6020831015156172f857805182526020820191506020810190506020830392506172d3565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b60208310151561734b5780518252602082019150602081019050602083039250617326565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b6020831015156173b55780518252602082019150602081019050602083039250617390565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114617417576040519150601f19603f3d011682016040523d82523d6000602084013e61741c565b606091505b50809450819250505080151561746957826040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401617460919061a52d565b60405180910390fd5b50509392505050565b6000806001846040518082805190602001908083835b6020831015156174ad5780518252602082019150602081019050602083039250617488565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600801549050600081148061757c57506001846040518082805190602001908083835b6020831015156175285780518252602082019150602081019050602083039250617503565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206007016001820381548110151561756e57fe5b906000526020600020015483115b91505092915050565b60046000815480929190600101919050555060058190806001815401808255809150509060018203906000526020600020016000909192909190915090805190602001906175d4929190619567565b505050565b606060006001836040518082805190602001908083835b60208310151561761557805182526020820191506020810190506020830392506175f0565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060010180549050905060606001846040518082805190602001908083835b60208310151561768b5780518252602082019150602081019050602083039250617666565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060010160008154811015156176cf57fe5b9060005260206000200160405160200180807f5b220000000000000000000000000000000000000000000000000000000000008152506002018280546001816001161561010002031660029004801561775f5780601f1061773d57610100808354040283529182019161775f565b820191906000526020600020905b81548152906001019060200180831161774b575b5050807f220000000000000000000000000000000000000000000000000000000000000081525060010191505060405160208183030381529060405290506000600190505b8281101561795757816001866040518082805190602001908083835b6020831015156177e557805182526020820191506020810190506020830392506177c0565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206001018281548110151561782857fe5b906000526020600020016040516020018083805190602001908083835b60208310151561786a5780518252602082019150602081019050602083039250617845565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c220000000000000000000000000000000000000000000000000000000000008152506002018280546001816001161561010002031660029004801561790b5780601f106178e957610100808354040283529182019161790b565b820191906000526020600020905b8154815290600101906020018083116178f7575b5050807f220000000000000000000000000000000000000000000000000000000000000081525060010192505050604051602081830303815290604052915080806001019150506177a4565b50806040516020018082805190602001908083835b602083101515617991578051825260208201915060208101905060208303925061796c565b6001836020036101000a038019825116818451168082178552505050505050905001807f5d0000000000000000000000000000000000000000000000000000000000000081525060010191505060405160208183030381529060405292505050919050565b60606000821415617a3e576040805190810160405280600281526020017f5b5d00000000000000000000000000000000000000000000000000000000000081525090506183b4565b617ddf6002617a6586866000815181101515617a5657fe5b906020019060200201516168c0565b6040518082805190602001908083835b602083101515617a9a5780518252602082019150602081019050602083039250617a75565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060c06040519081016040529081600082018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015617b725780601f10617b4757610100808354040283529160200191617b72565b820191906000526020600020905b815481529060010190602001808311617b5557829003601f168201915b5050505050815260200160018201548152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015617c1e5780601f10617bf357610100808354040283529160200191617c1e565b820191906000526020600020905b815481529060010190602001808311617c0157829003601f168201915b505050505081526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600482018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015617d165780601f10617ceb57610100808354040283529160200191617d16565b820191906000526020600020905b815481529060010190602001808311617cf957829003601f168201915b50505050508152602001600582018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015617db85780601f10617d8d57610100808354040283529160200191617db8565b820191906000526020600020905b815481529060010190602001808311617d9b57829003601f168201915b505050505081525050846000815181101515617dd057fe5b90602001906020020151618bb9565b60405160200180807f5b0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b602083101515617e3f5780518252602082019150602081019050602083039250617e1a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405290506000600190505b8281101561831b57816182246002617eab888886815181101515617e9c57fe5b906020019060200201516168c0565b6040518082805190602001908083835b602083101515617ee05780518252602082019150602081019050602083039250617ebb565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060c06040519081016040529081600082018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015617fb85780601f10617f8d57610100808354040283529160200191617fb8565b820191",
        "906000526020600020905b815481529060010190602001808311617f9b57829003601f168201915b5050505050815260200160018201548152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156180645780601f1061803957610100808354040283529160200191618064565b820191906000526020600020905b81548152906001019060200180831161804757829003601f168201915b505050505081526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600482018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561815c5780601f106181315761010080835404028352916020019161815c565b820191906000526020600020905b81548152906001019060200180831161813f57829003601f168201915b50505050508152602001600582018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156181fe5780601f106181d3576101008083540402835291602001916181fe565b820191906000526020600020905b8154815290600101906020018083116181e157829003601f168201915b505050505081525050868481518110151561821557fe5b90602001906020020151618bb9565b6040516020018083805190602001908083835b60208310151561825c5780518252602082019150602081019050602083039250618237565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b6020831015156182d757805182526020820191506020810190506020830392506182b2565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405291508080600101915050617e7c565b50806040516020018082805190602001908083835b6020831015156183555780518252602082019150602081019050602083039250618330565b6001836020036101000a038019825116818451168082178552505050505050905001807f5d0000000000000000000000000000000000000000000000000000000000000081525060010191505060405160208183030381529060405290505b9392505050565b606080602060ff166040519080825280601f01601f1916602001820160405280156183f55781602001600182028038833980820191505090505b5090506000602060ff16905060008090505b8181101561848b57848160208110151561841d57fe5b1a7f010000000000000000000000000000000000000000000000000000000000000002838281518110151561844e57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050618407565b508192505050919050565b600080835190506000835190506184ab619812565b610120604051908101604052807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000b81526020016000800b81526020016000800b81526020016000800b81526020016000800b81526020016000800b81526020016000800b81526020016000800b81526020016000800b8152509050600083905060008090505b60008213801561854357508381125b156186a5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81148061866c5750868181518110151561857f57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191688600184038151811015156185fd57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156186875781806001900392505080806001019150506186a0565b828160098110151561869557fe5b602002015160000b90505b618534565b838114156186bc57838201955050505050506186c6565b6000955050505050505b92915050565b6000602a82511415156187d2578160405160200180807f63616e6e6f7420636f7665727420000000000000000000000000000000000000815250600e0182805190602001908083835b60208310151561873a5780518252602082019150602081019050602083039250618715565b6001836020036101000a038019825116818451168082178552505050505050905001807f746f2062636f7320616464726573730000000000000000000000000000000000815250600f019150506040516020818303038152906040526040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016187c9919061a52d565b60405180910390fd5b60008090506000806000600290505b602a811015618adb576101008402935085818151811015156187ff57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900460ff169250856001820181518110151561888357fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900460ff16915060618373ffffffffffffffffffffffffffffffffffffffff1610158015618934575060668373ffffffffffffffffffffffffffffffffffffffff1611155b15618944576057830392506189de565b60418373ffffffffffffffffffffffffffffffffffffffff1610158015618982575060468373ffffffffffffffffffffffffffffffffffffffff1611155b15618992576037830392506189dd565b60308373ffffffffffffffffffffffffffffffffffffffff16101580156189d0575060398373ffffffffffffffffffffffffffffffffffffffff1611155b156189dc576030830392505b5b5b60618273ffffffffffffffffffffffffffffffffffffffff1610158015618a1c575060668273ffffffffffffffffffffffffffffffffffffffff1611155b15618a2c57605782039150618ac6565b60418273ffffffffffffffffffffffffffffffffffffffff1610158015618a6a575060468273ffffffffffffffffffffffffffffffffffffffff1611155b15618a7a57603782039150618ac5565b60308273ffffffffffffffffffffffffffffffffffffffff1610158015618ab8575060398273ffffffffffffffffffffffffffffffffffffffff1611155b15618ac4576030820391505b5b5b816010840201840193506002810190506187e1565b50829350505050919050565b6000600a827f0100000000000000000000000000000000000000000000000000000000000000900460ff161015618b68576030827f01000000000000000000000000000000000000000000000000000000000000009004017f0100000000000000000000000000000000000000000000000000000000000000029050618bb4565b6057827f01000000000000000000000000000000000000000000000000000000000000009004017f01000000000000000000000000000000000000000000000000000000000000000290505b919050565b6060618bc482615ee3565b83600001518460400151618bdb8660200151615ee3565b618be88760800151618fed565b618bf58860a001516192bc565b60405160200180807f7b2278615472616e73616374696f6e536571223a00000000000000000000000081525060140187805190602001908083835b602083101515618c555780518252602082019150602081019050602083039250618c30565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f226163636f756e744964656e74697479223a220000000000000000000000000081525060130186805190602001908083835b602083101515618cf85780518252602082019150602081019050602083039250618cd3565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f2270617468223a2200000000000000000000000000000000000000000000000081525060080185805190602001908083835b602083101515618d9b5780518252602082019150602081019050602083039250618d76565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f2274696d657374616d70223a0000000000000000000000000000000000000000815250600c0184805190602001908083835b602083101515618e3e5780518252602082019150602081019050602083039250618e19565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f226d6574686f64223a2200000000000000000000000000000000000000000000815250600a0183805190602001908083835b602083101515618ee15780518252602082019150602081019050602083039250618ebc565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f2261726773223a2200000000000000000000000000000000000000000000000081525060080182805190602001908083835b602083101515618f845780518252602082019150602081019050602083039250618f5f565b6001836020036101000a0380",
        "19825116818451168082178552505050505050905001807f227d0000000000000000000000000000000000000000000000000000000000008152506002019650505050505050604051602081830303815290604052905092915050565b6060808290506000815190506060816040519080825280601f01601f19166020018201604052801561902e5781602001600182028038833980820191505090505b50905060007f28000000000000000000000000000000000000000000000000000000000000009050600080905060008090505b848110156191c257827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916868281518110151561909a57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415156191b057858181518110151561911c57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002848380600101945081518110151561917b57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506191b5565b6191c2565b8080600101915050619061565b506060816040519080825280601f01601f1916602001820160405280156191f85781602001600182028038833980820191505090505b50905060008090505b828110156192ad57848181518110151561921757fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002828281518110151561927057fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050619201565b50809650505050505050919050565b60606000825190506060600282026040519080825280601f01601f1916602001820160405280156192fc5781602001600182028038833980820191505090505b50905060008090505b828110156194dc576000858281518110151561931d57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002905060006010827f0100000000000000000000000000000000000000000000000000000000000000900460ff1681151561939e57fe5b047f01000000000000000000000000000000000000000000000000000000000000000290506000817f01000000000000000000000000000000000000000000000000000000000000009004601002837f01000000000000000000000000000000000000000000000000000000000000009004037f010000000000000000000000000000000000000000000000000000000000000002905061943e82618ae7565b856002860281518110151561944f57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061948881618ae7565b856001600287020181518110151561949c57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505050508080600101915050619305565b508092505050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061952857805160ff1916838001178555619556565b82800160010185558215619556579182015b8281111561955557825182559160200191906001019061953a565b5b5090506195639190619836565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106195a857805160ff19168380011785556195d6565b828001600101855582156195d6579182015b828111156195d55782518255916020019190600101906195ba565b5b5090506195e39190619836565b5090565b81548183558181111561960e5781836000526020600020918201910161960d919061985b565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061965457805160ff1916838001178555619682565b82800160010185558215619682579182015b82811115619681578251825591602001919060010190619666565b5b50905061968f9190619836565b5090565b8280548282559060005260206000209081019282156196e2579160200282015b828111156196e15782518290805190602001906196d1929190619613565b50916020019190600101906196b3565b5b5090506196ef919061985b565b5090565b82805482825590600052602060002090810192821561976c579160200282015b8281111561976b5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190619713565b5b5090506197799190619887565b5090565b8280548282559060005260206000209081019282156197b9579160200282015b828111156197b857825182559160200191906001019061979d565b5b5090506197c69190619836565b5090565b50805460018160011615610100020316600290046000825580601f106197f0575061980f565b601f01602090049060005260206000209081019061980e9190619836565b5b50565b61012060405190810160405280600990602082028038833980820191505090505090565b61985891905b8082111561985457600081600090555060010161983c565b5090565b90565b61988491905b80821115619880576000818161987791906197ca565b50600101619861565b5090565b90565b6198c791905b808211156198c357600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161988d565b5090565b90565b600082601f83011215156198dd57600080fd5b81356198f06198eb8261a72f565b61a702565b9150818183526020840193506020810190508360005b83811015619936578135860161991c88826199aa565b845260208401935060208301925050600181019050619906565b5050505092915050565b600082601f830112151561995357600080fd5b81356199666199618261a757565b61a702565b9150808252602083016020830185838301111561998257600080fd5b61998d83828461a871565b50505092915050565b60006199a2825161a85d565b905092915050565b600082601f83011215156199bd57600080fd5b81356199d06199cb8261a783565b61a702565b915080825260208301602083018583830111156199ec57600080fd5b6199f783828461a871565b50505092915050565b600082601f8301121515619a1357600080fd5b8135619a26619a218261a7af565b61a702565b91508082526020830160208301858383011115619a4257600080fd5b619a4d83828461a871565b50505092915050565b600082601f8301121515619a6957600080fd5b8151619a7c619a778261a7af565b61a702565b91508082526020830160208301858383011115619a9857600080fd5b619aa383828461a880565b50505092915050565b6000619ab8823561a867565b905092915050565b600060208284031215619ad257600080fd5b600082013567ffffffffffffffff811115619aec57600080fd5b619af884828501619940565b91505092915050565b600060208284031215619b1357600080fd5b6000619b2184828501619996565b91505092915050565b600060208284031215619b3c57600080fd5b600082013567ffffffffffffffff811115619b5657600080fd5b619b6284828501619a00565b91505092915050565b600060208284031215619b7d57600080fd5b600082015167ffffffffffffffff811115619b9757600080fd5b619ba384828501619a56565b91505092915050565b600080600060608486031215619bc157600080fd5b600084013567ffffffffffffffff811115619bdb57600080fd5b619be786828701619a00565b935050602084013567ffffffffffffffff811115619c0457600080fd5b619c10868287016198ca565b925050604084013567ffffffffffffffff811115619c2d57600080fd5b619c39868287016198ca565b9150509250925092565b60008060408385031215619c5657600080fd5b600083013567ffffffffffffffff811115619c7057600080fd5b619c7c85828601619a00565b925050602083013567ffffffffffffffff811115619c9957600080fd5b619ca585828601619940565b9150509250929050565b60008060408385031215619cc257600080fd5b600083013567ffffffffffffffff811115619cdc57600080fd5b619ce885828601619a00565b925050602083013567ffffffffffffffff811115619d0557600080fd5b619d1185828601619a00565b9150509250929050565b600080600060608486031215619d3057600080fd5b600084013567ffffffffffffffff811115619d4a57600080fd5b619d5686828701619a00565b935050602084013567ffffffffffffffff811115619d7357600080fd5b619d7f86828701619a00565b925050604084013567ffffffffffffffff811115619d9c57600080fd5b619da886828701619940565b9150509250925092565b60008060008060808587031215619dc857600080fd5b600085013567ffffffffffffffff811115619de257600080fd5b619dee87828801619a00565b945050602085013567ffffffffffffffff811115619e0b57600080fd5b619e1787828801619a00565b935050604085013567ffffffffffffffff811115619e3457600080fd5b619e4087828801619940565b925050606085013567ffffffffffffffff811115619e5d57600080fd5b619e6987828801619a00565b91505092959194509250565b60008060008060808587031215619e8b57600080fd5b600085013567ffffffffffffffff811115619ea557600080fd5b619eb187828801619a00565b945050602085013567ffffffffffffffff811115619ece57600080fd5b619eda87828801619a00565b935050604085013567ffffffffffffffff811115619ef757600080fd5b619f0387828801619a00565b925050606085013567ffffffffffffffff811115619f2057600080fd5b619f2c87828801619940565b91505092959194509250565b60008060008060808587031215619f4e57600080fd5b600085013567ffffffffffffffff811115619f6857600080fd5b619f7487828801619a00565b945050602085013567ffffffffffffffff811115619f9157600080fd",
        "5b619f9d87828801619a00565b935050604085013567ffffffffffffffff811115619fba57600080fd5b619fc687828801619a00565b925050606085013567ffffffffffffffff811115619fe357600080fd5b619fef87828801619a00565b91505092959194509250565b60008060008060008060c0878903121561a01457600080fd5b600087013567ffffffffffffffff81111561a02e57600080fd5b61a03a89828a01619a00565b965050602087013567ffffffffffffffff81111561a05757600080fd5b61a06389828a01619a00565b955050604061a07489828a01619aac565b945050606087013567ffffffffffffffff81111561a09157600080fd5b61a09d89828a01619a00565b935050608087013567ffffffffffffffff81111561a0ba57600080fd5b61a0c689828a01619a00565b92505060a087013567ffffffffffffffff81111561a0e357600080fd5b61a0ef89828a01619940565b9150509295509295509295565b6000806040838503121561a10f57600080fd5b600083013567ffffffffffffffff81111561a12957600080fd5b61a13585828601619a00565b925050602061a14685828601619aac565b9150509250929050565b61a1598161a821565b82525050565b600061a16a8261a7e8565b8084526020840193508360208202850161a1838561a7db565b60005b8481101561a1bc57838303885261a19e83835161a239565b925061a1a98261a814565b915060208801975060018101905061a186565b508196508694505050505092915050565b600061a1d88261a7f3565b80845261a1ec81602086016020860161a880565b61a1f58161a8b3565b602085010191505092915050565b600061a20e8261a809565b80845261a22281602086016020860161a880565b61a22b8161a8b3565b602085010191505092915050565b600061a2448261a7fe565b80845261a25881602086016020860161a880565b61a2618161a8b3565b602085010191505092915050565b6000601882527f7861207472616e73616374696f6e206e6f7420666f756e6400000000000000006020830152604082019050919050565b6000601d82527f746865206e616d6527732061646472657373206e6f742065786973742e0000006020830152604082019050919050565b6000602182527f64656c657465206e6f6e6578697374656e74207861207472616e73616374696f60208301527f6e000000000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000602182527f7861207472616e73616374696f6e20686173206265656e20636f6d6d6974746560208301527f64000000000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000602282527f7861207472616e73616374696f6e20686173206265656e20726f6c6c6564626160208301527f636b0000000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000601682527f6465706c6f7920636f6e7472616374206661696c6564000000000000000000006020830152604082019050919050565b6000602182527f7365712073686f756c642062652067726561746572207468616e206265666f7260208301527f65000000000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000601f82527f64656c65746520756e6d617463686564207861207472616e73616374696f6e006020830152604082019050919050565b61a4c88161a853565b82525050565b600060208201905061a4e3600083018461a150565b92915050565b6000602082019050818103600083015261a503818461a15f565b905092915050565b6000602082019050818103600083015261a525818461a1cd565b905092915050565b6000602082019050818103600083015261a547818461a203565b905092915050565b6000604082019050818103600083015261a569818561a203565b9050818103602083015261a57d818461a203565b90509392505050565b6000608082019050818103600083015261a5a0818761a203565b9050818103602083015261a5b4818661a203565b9050818103604083015261a5c8818561a203565b9050818103606083015261a5dc818461a203565b905095945050505050565b6000602082019050818103600083015261a6008161a26f565b9050919050565b6000602082019050818103600083015261a6208161a2a6565b9050919050565b6000602082019050818103600083015261a6408161a2dd565b9050919050565b6000602082019050818103600083015261a6608161a33a565b9050919050565b6000602082019050818103600083015261a6808161a397565b9050919050565b6000602082019050818103600083015261a6a08161a3f4565b9050919050565b6000602082019050818103600083015261a6c08161a42b565b9050919050565b6000602082019050818103600083015261a6e08161a488565b9050919050565b600060208201905061a6fc600083018461a4bf565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561a72557600080fd5b8060405250919050565b600067ffffffffffffffff82111561a74657600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561a76e57600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111561a79a57600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111561a7c657600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600061a82c8261a833565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000819050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561a89e57808201518184015260208101905061a883565b8381111561a8ad576000848401525b50505050565b6000601f19601f830116905091905056fe7265736f75726365206973206c6f636b656420627920756e66696e6973686564207861207472616e73616374696f6e3a20206973206c6f636b656420627920756e66696e6973686564207861207472616e73616374696f6e3a2020697320756e7265676973746572656420696e207861207472616e73616374696f6e2020697320756e7265676973746572656420696e207861207472616e73616374696f6e3a20a265627a7a723058209dedbde1c9f945f7ac085f01742bcc9d45330400080a9243bda0d8a9d7bc200e6c6578706572696d656e74616cf50037"
    };

    public static final String SM_BINARY =
            org.fisco.bcos.sdk.utils.StringUtils.joinAll("", SM_BINARY_ARRAY);

    public static final String[] ABI_ARRAY = {
        "[{\"constant\":false,\"inputs\":[{\"name\":\"_path\",\"type\":\"string\"},{\"name\":\"_version\",\"type\":\"string\"},{\"name\":\"_bin\",\"type\":\"bytes\"},{\"name\":\"_abi\",\"type\":\"string\"}],\"name\":\"deployContractWithRegisterCNS\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getVersion\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_name\",\"type\":\"string\"},{\"name\":\"_argsWithMethodId\",\"type\":\"bytes\"}],\"name\":\"constantCall\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getPaths\",\"outputs\":[{\"name\":\"\",\"type\":\"string[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_xaTransactionID\",\"type\":\"string\"},{\"name\":\"_selfPaths\",\"type\":\"string[]\"},{\"name\":\"_otherPaths\",\"type\":\"string[]\"}],\"name\":\"startXATransaction\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_xaTransactionID\",\"type\":\"string\"}],\"name\":\"commitXATransaction\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_xaTransactionID\",\"type\":\"string\"}],\"name\":\"getXATransaction\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getXATransactionNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_xaTransactionID\",\"type\":\"string\"}],\"name\":\"rollbackAndDeleteXATransactionTask\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_index\",\"type\":\"string\"},{\"name\":\"_size\",\"type\":\"uint256\"}],\"name\":\"listXATransactions\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_path\",\"type\":\"string\"},{\"name\":\"_version\",\"type\":\"string\"},{\"name\":\"_addr\",\"type\":\"string\"},{\"name\":\"_abi\",\"type\":\"string\"}],\"name\":\"registerCNS\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_xaTransactionID\",\"type\":\"string\"}],\"name\":\"rollbackXATransaction\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_bin\",\"type\":\"bytes\"}],\"name\":\"deployContract\",\"outputs\":[{\"name\":\"addr\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_name\",\"type\":\"string\"}],\"name\":\"selectByName\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_name\",\"type\":\"string\"},{\"name\":\"_version\",\"type\":\"string\"}],\"name\":\"selectByNameAndVersion\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_uid\",\"type\":\"string\"},{\"name\":\"_name\",\"type\":\"string\"},{\"name\":\"_argsWithMethodId\",\"type\":\"bytes\"}],\"name\":\"sendTransaction\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_str\",\"type\":\"string\"}],\"name\":\"stringToUint256\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_XATransactionID\",\"type\":\"string\"},{\"name\":\"_path\",\"type\":\"string\"},{\"name\":\"_func\",\"type\":\"string\"},{\"name\":\"_args\",\"type\":\"bytes\"}],\"name\":\"constantCall\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_path\",\"type\":\"string\"}],\"name\":\"getXATransactionState\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_path\",\"type\":\"string\"}],\"name\":\"addPath\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_uid\",\"type\":\"string\"},{\"name\":\"_XATransactionID\",\"type\":\"string\"},{\"name\":\"_XATransactionSeq\",\"type\":\"uint256\"},{\"name\":\"_path\",\"type\":\"string\"},{\"name\":\"_func\",\"type\":\"string\"},{\"name\":\"_args\",\"type\":\"bytes\"}],\"name\":\"sendTransaction\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLatestXATransactionID\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLatestXATransaction\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"deletePathList\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]"
    };

    public static final String ABI = org.fisco.bcos.sdk.utils.StringUtils.joinAll("", ABI_ARRAY);

    public static final String FUNC_DEPLOYCONTRACTWITHREGISTERCNS = "deployContractWithRegisterCNS";

    public static final String FUNC_GETVERSION = "getVersion";

    public static final String FUNC_CONSTANTCALL = "constantCall";

    public static final String FUNC_GETPATHS = "getPaths";

    public static final String FUNC_STARTXATRANSACTION = "startXATransaction";

    public static final String FUNC_COMMITXATRANSACTION = "commitXATransaction";

    public static final String FUNC_GETXATRANSACTION = "getXATransaction";

    public static final String FUNC_GETXATRANSACTIONNUMBER = "getXATransactionNumber";

    public static final String FUNC_ROLLBACKANDDELETEXATRANSACTIONTASK =
            "rollbackAndDeleteXATransactionTask";

    public static final String FUNC_LISTXATRANSACTIONS = "listXATransactions";

    public static final String FUNC_REGISTERCNS = "registerCNS";

    public static final String FUNC_ROLLBACKXATRANSACTION = "rollbackXATransaction";

    public static final String FUNC_DEPLOYCONTRACT = "deployContract";

    public static final String FUNC_SELECTBYNAME = "selectByName";

    public static final String FUNC_SELECTBYNAMEANDVERSION = "selectByNameAndVersion";

    public static final String FUNC_SENDTRANSACTION = "sendTransaction";

    public static final String FUNC_STRINGTOUINT256 = "stringToUint256";

    public static final String FUNC_GETXATRANSACTIONSTATE = "getXATransactionState";

    public static final String FUNC_ADDPATH = "addPath";

    public static final String FUNC_GETLATESTXATRANSACTIONID = "getLatestXATransactionID";

    public static final String FUNC_GETLATESTXATRANSACTION = "getLatestXATransaction";

    public static final String FUNC_DELETEPATHLIST = "deletePathList";

    protected WeCrossProxy(String contractAddress, Client client, CryptoKeyPair credential) {
        super(getBinary(client.getCryptoSuite()), contractAddress, client, credential);
    }

    public static String getBinary(CryptoSuite cryptoSuite) {
        return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY);
    }

    public TransactionReceipt deployContractWithRegisterCNS(
            String _path, String _version, byte[] _bin, String _abi) {
        final Function function =
                new Function(
                        FUNC_DEPLOYCONTRACTWITHREGISTERCNS,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_path),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_version),
                                new org.fisco.bcos.sdk.abi.datatypes.DynamicBytes(_bin),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_abi)),
                        Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] deployContractWithRegisterCNS(
            String _path, String _version, byte[] _bin, String _abi, TransactionCallback callback) {
        final Function function =
                new Function(
                        FUNC_DEPLOYCONTRACTWITHREGISTERCNS,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_path),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_version),
                                new org.fisco.bcos.sdk.abi.datatypes.DynamicBytes(_bin),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_abi)),
                        Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForDeployContractWithRegisterCNS(
            String _path, String _version, byte[] _bin, String _abi) {
        final Function function =
                new Function(
                        FUNC_DEPLOYCONTRACTWITHREGISTERCNS,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_path),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_version),
                                new org.fisco.bcos.sdk.abi.datatypes.DynamicBytes(_bin),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_abi)),
                        Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple4<String, String, byte[], String> getDeployContractWithRegisterCNSInput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_DEPLOYCONTRACTWITHREGISTERCNS,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<Utf8String>() {},
                                new TypeReference<Utf8String>() {},
                                new TypeReference<DynamicBytes>() {},
                                new TypeReference<Utf8String>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple4<String, String, byte[], String>(
                (String) results.get(0).getValue(),
                (String) results.get(1).getValue(),
                (byte[]) results.get(2).getValue(),
                (String) results.get(3).getValue());
    }

    public Tuple1<String> getDeployContractWithRegisterCNSOutput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function =
                new Function(
                        FUNC_DEPLOYCONTRACTWITHREGISTERCNS,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<String>((String) results.get(0).getValue());
    }

    public String getVersion() throws ContractException {
        final Function function =
                new Function(
                        FUNC_GETVERSION,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeCallWithSingleValueReturn(function, String.class);
    }

    public TransactionReceipt constantCall(String _name, byte[] _argsWithMethodId) {
        final Function function =
                new Function(
                        FUNC_CONSTANTCALL,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_name),
                                new org.fisco.bcos.sdk.abi.datatypes.DynamicBytes(
                                        _argsWithMethodId)),
                        Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] constantCall(
            String _name, byte[] _argsWithMethodId, TransactionCallback callback) {
        final Function function =
                new Function(
                        FUNC_CONSTANTCALL,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_name),
                                new org.fisco.bcos.sdk.abi.datatypes.DynamicBytes(
                                        _argsWithMethodId)),
                        Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForConstantCall(String _name, byte[] _argsWithMethodId) {
        final Function function =
                new Function(
                        FUNC_CONSTANTCALL,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_name),
                                new org.fisco.bcos.sdk.abi.datatypes.DynamicBytes(
                                        _argsWithMethodId)),
                        Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple2<String, byte[]> getConstantCallStringBytesInput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_CONSTANTCALL,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<Utf8String>() {},
                                new TypeReference<DynamicBytes>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple2<String, byte[]>(
                (String) results.get(0).getValue(), (byte[]) results.get(1).getValue());
    }

    public Tuple1<byte[]> getConstantCallStringBytesOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function =
                new Function(
                        FUNC_CONSTANTCALL,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<byte[]>((byte[]) results.get(0).getValue());
    }

    public List getPaths() throws ContractException {
        final Function function =
                new Function(
                        FUNC_GETPATHS,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> result = (List<Type>) executeCallWithSingleValueReturn(function, List.class);
        return convertToNative(result);
    }

    public TransactionReceipt startXATransaction(
            String _xaTransactionID, List<String> _selfPaths, List<String> _otherPaths) {
        final Function function =
                new Function(
                        FUNC_STARTXATRANSACTION,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_xaTransactionID),
                                _selfPaths.isEmpty()
                                        ? org.fisco.bcos.sdk.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.sdk.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.sdk.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.sdk.abi.Utils.typeMap(
                                                        _selfPaths,
                                                        org.fisco.bcos.sdk.abi.datatypes.Utf8String
                                                                .class)),
                                _otherPaths.isEmpty()
                                        ? org.fisco.bcos.sdk.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.sdk.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.sdk.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.sdk.abi.Utils.typeMap(
                                                        _otherPaths,
                                                        org.fisco.bcos.sdk.abi.datatypes.Utf8String
                                                                .class))),
                        Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] startXATransaction(
            String _xaTransactionID,
            List<String> _selfPaths,
            List<String> _otherPaths,
            TransactionCallback callback) {
        final Function function =
                new Function(
                        FUNC_STARTXATRANSACTION,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_xaTransactionID),
                                _selfPaths.isEmpty()
                                        ? org.fisco.bcos.sdk.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.sdk.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.sdk.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.sdk.abi.Utils.typeMap(
                                                        _selfPaths,
                                                        org.fisco.bcos.sdk.abi.datatypes.Utf8String
                                                                .class)),
                                _otherPaths.isEmpty()
                                        ? org.fisco.bcos.sdk.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.sdk.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.sdk.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.sdk.abi.Utils.typeMap(
                                                        _otherPaths,
                                                        org.fisco.bcos.sdk.abi.datatypes.Utf8String
                                                                .class))),
                        Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForStartXATransaction(
            String _xaTransactionID, List<String> _selfPaths, List<String> _otherPaths) {
        final Function function =
                new Function(
                        FUNC_STARTXATRANSACTION,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_xaTransactionID),
                                _selfPaths.isEmpty()
                                        ? org.fisco.bcos.sdk.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.sdk.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.sdk.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.sdk.abi.Utils.typeMap(
                                                        _selfPaths,
                                                        org.fisco.bcos.sdk.abi.datatypes.Utf8String
                                                                .class)),
                                _otherPaths.isEmpty()
                                        ? org.fisco.bcos.sdk.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.sdk.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.sdk.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.sdk.abi.Utils.typeMap(
                                                        _otherPaths,
                                                        org.fisco.bcos.sdk.abi.datatypes.Utf8String
                                                                .class))),
                        Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple3<String, List<String>, List<String>> getStartXATransactionInput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_STARTXATRANSACTION,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<Utf8String>() {},
                                new TypeReference<DynamicArray<Utf8String>>() {},
                                new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple3<String, List<String>, List<String>>(
                (String) results.get(0).getValue(),
                convertToNative((List<Utf8String>) results.get(1).getValue()),
                convertToNative((List<Utf8String>) results.get(2).getValue()));
    }

    public Tuple1<String> getStartXATransactionOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function =
                new Function(
                        FUNC_STARTXATRANSACTION,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<String>((String) results.get(0).getValue());
    }

    public TransactionReceipt commitXATransaction(String _xaTransactionID) {
        final Function function =
                new Function(
                        FUNC_COMMITXATRANSACTION,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_xaTransactionID)),
                        Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] commitXATransaction(String _xaTransactionID, TransactionCallback callback) {
        final Function function =
                new Function(
                        FUNC_COMMITXATRANSACTION,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_xaTransactionID)),
                        Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForCommitXATransaction(String _xaTransactionID) {
        final Function function =
                new Function(
                        FUNC_COMMITXATRANSACTION,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_xaTransactionID)),
                        Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple1<String> getCommitXATransactionInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_COMMITXATRANSACTION,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<String>((String) results.get(0).getValue());
    }

    public Tuple1<String> getCommitXATransactionOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function =
                new Function(
                        FUNC_COMMITXATRANSACTION,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<String>((String) results.get(0).getValue());
    }

    public String getXATransaction(String _xaTransactionID) throws ContractException {
        final Function function =
                new Function(
                        FUNC_GETXATRANSACTION,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_xaTransactionID)),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeCallWithSingleValueReturn(function, String.class);
    }

    public String getXATransactionNumber() throws ContractException {
        final Function function =
                new Function(
                        FUNC_GETXATRANSACTIONNUMBER,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeCallWithSingleValueReturn(function, String.class);
    }

    public TransactionReceipt rollbackAndDeleteXATransactionTask(String _xaTransactionID) {
        final Function function =
                new Function(
                        FUNC_ROLLBACKANDDELETEXATRANSACTIONTASK,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_xaTransactionID)),
                        Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] rollbackAndDeleteXATransactionTask(
            String _xaTransactionID, TransactionCallback callback) {
        final Function function =
                new Function(
                        FUNC_ROLLBACKANDDELETEXATRANSACTIONTASK,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_xaTransactionID)),
                        Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForRollbackAndDeleteXATransactionTask(
            String _xaTransactionID) {
        final Function function =
                new Function(
                        FUNC_ROLLBACKANDDELETEXATRANSACTIONTASK,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_xaTransactionID)),
                        Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple1<String> getRollbackAndDeleteXATransactionTaskInput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_ROLLBACKANDDELETEXATRANSACTIONTASK,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<String>((String) results.get(0).getValue());
    }

    public Tuple1<String> getRollbackAndDeleteXATransactionTaskOutput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function =
                new Function(
                        FUNC_ROLLBACKANDDELETEXATRANSACTIONTASK,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<String>((String) results.get(0).getValue());
    }

    public String listXATransactions(String _index, BigInteger _size) throws ContractException {
        final Function function =
                new Function(
                        FUNC_LISTXATRANSACTIONS,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_index),
                                new org.fisco.bcos.sdk.abi.datatypes.generated.Uint256(_size)),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeCallWithSingleValueReturn(function, String.class);
    }

    public TransactionReceipt registerCNS(
            String _path, String _version, String _addr, String _abi) {
        final Function function =
                new Function(
                        FUNC_REGISTERCNS,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_path),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_version),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_addr),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_abi)),
                        Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] registerCNS(
            String _path,
            String _version,
            String _addr,
            String _abi,
            TransactionCallback callback) {
        final Function function =
                new Function(
                        FUNC_REGISTERCNS,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_path),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_version),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_addr),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_abi)),
                        Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForRegisterCNS(
            String _path, String _version, String _addr, String _abi) {
        final Function function =
                new Function(
                        FUNC_REGISTERCNS,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_path),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_version),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_addr),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_abi)),
                        Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple4<String, String, String, String> getRegisterCNSInput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_REGISTERCNS,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<Utf8String>() {},
                                new TypeReference<Utf8String>() {},
                                new TypeReference<Utf8String>() {},
                                new TypeReference<Utf8String>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple4<String, String, String, String>(
                (String) results.get(0).getValue(),
                (String) results.get(1).getValue(),
                (String) results.get(2).getValue(),
                (String) results.get(3).getValue());
    }

    public TransactionReceipt rollbackXATransaction(String _xaTransactionID) {
        final Function function =
                new Function(
                        FUNC_ROLLBACKXATRANSACTION,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_xaTransactionID)),
                        Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] rollbackXATransaction(String _xaTransactionID, TransactionCallback callback) {
        final Function function =
                new Function(
                        FUNC_ROLLBACKXATRANSACTION,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_xaTransactionID)),
                        Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForRollbackXATransaction(String _xaTransactionID) {
        final Function function =
                new Function(
                        FUNC_ROLLBACKXATRANSACTION,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_xaTransactionID)),
                        Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple1<String> getRollbackXATransactionInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_ROLLBACKXATRANSACTION,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<String>((String) results.get(0).getValue());
    }

    public Tuple1<String> getRollbackXATransactionOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function =
                new Function(
                        FUNC_ROLLBACKXATRANSACTION,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<String>((String) results.get(0).getValue());
    }

    public TransactionReceipt deployContract(byte[] _bin) {
        final Function function =
                new Function(
                        FUNC_DEPLOYCONTRACT,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.DynamicBytes(_bin)),
                        Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] deployContract(byte[] _bin, TransactionCallback callback) {
        final Function function =
                new Function(
                        FUNC_DEPLOYCONTRACT,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.DynamicBytes(_bin)),
                        Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForDeployContract(byte[] _bin) {
        final Function function =
                new Function(
                        FUNC_DEPLOYCONTRACT,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.DynamicBytes(_bin)),
                        Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple1<byte[]> getDeployContractInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_DEPLOYCONTRACT,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<byte[]>((byte[]) results.get(0).getValue());
    }

    public Tuple1<String> getDeployContractOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function =
                new Function(
                        FUNC_DEPLOYCONTRACT,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<String>((String) results.get(0).getValue());
    }

    public String selectByName(String _name) throws ContractException {
        final Function function =
                new Function(
                        FUNC_SELECTBYNAME,
                        Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_name)),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeCallWithSingleValueReturn(function, String.class);
    }

    public String selectByNameAndVersion(String _name, String _version) throws ContractException {
        final Function function =
                new Function(
                        FUNC_SELECTBYNAMEANDVERSION,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_name),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_version)),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeCallWithSingleValueReturn(function, String.class);
    }

    public TransactionReceipt sendTransaction(String _uid, String _name, byte[] _argsWithMethodId) {
        final Function function =
                new Function(
                        FUNC_SENDTRANSACTION,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_uid),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_name),
                                new org.fisco.bcos.sdk.abi.datatypes.DynamicBytes(
                                        _argsWithMethodId)),
                        Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] sendTransaction(
            String _uid, String _name, byte[] _argsWithMethodId, TransactionCallback callback) {
        final Function function =
                new Function(
                        FUNC_SENDTRANSACTION,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_uid),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_name),
                                new org.fisco.bcos.sdk.abi.datatypes.DynamicBytes(
                                        _argsWithMethodId)),
                        Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForSendTransaction(
            String _uid, String _name, byte[] _argsWithMethodId) {
        final Function function =
                new Function(
                        FUNC_SENDTRANSACTION,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_uid),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_name),
                                new org.fisco.bcos.sdk.abi.datatypes.DynamicBytes(
                                        _argsWithMethodId)),
                        Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple3<String, String, byte[]> getSendTransactionStringStringBytesInput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_SENDTRANSACTION,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<Utf8String>() {},
                                new TypeReference<Utf8String>() {},
                                new TypeReference<DynamicBytes>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple3<String, String, byte[]>(
                (String) results.get(0).getValue(),
                (String) results.get(1).getValue(),
                (byte[]) results.get(2).getValue());
    }

    public Tuple1<byte[]> getSendTransactionStringStringBytesOutput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function =
                new Function(
                        FUNC_SENDTRANSACTION,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<byte[]>((byte[]) results.get(0).getValue());
    }

    public BigInteger stringToUint256(String _str) throws ContractException {
        final Function function =
                new Function(
                        FUNC_STRINGTOUINT256,
                        Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_str)),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeCallWithSingleValueReturn(function, BigInteger.class);
    }

    public TransactionReceipt constantCall(
            String _XATransactionID, String _path, String _func, byte[] _args) {
        final Function function =
                new Function(
                        FUNC_CONSTANTCALL,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_XATransactionID),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_path),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_func),
                                new org.fisco.bcos.sdk.abi.datatypes.DynamicBytes(_args)),
                        Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] constantCall(
            String _XATransactionID,
            String _path,
            String _func,
            byte[] _args,
            TransactionCallback callback) {
        final Function function =
                new Function(
                        FUNC_CONSTANTCALL,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_XATransactionID),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_path),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_func),
                                new org.fisco.bcos.sdk.abi.datatypes.DynamicBytes(_args)),
                        Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForConstantCall(
            String _XATransactionID, String _path, String _func, byte[] _args) {
        final Function function =
                new Function(
                        FUNC_CONSTANTCALL,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_XATransactionID),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_path),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_func),
                                new org.fisco.bcos.sdk.abi.datatypes.DynamicBytes(_args)),
                        Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple4<String, String, String, byte[]> getConstantCallStringStringStringBytesInput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_CONSTANTCALL,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<Utf8String>() {},
                                new TypeReference<Utf8String>() {},
                                new TypeReference<Utf8String>() {},
                                new TypeReference<DynamicBytes>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple4<String, String, String, byte[]>(
                (String) results.get(0).getValue(),
                (String) results.get(1).getValue(),
                (String) results.get(2).getValue(),
                (byte[]) results.get(3).getValue());
    }

    public Tuple1<byte[]> getConstantCallStringStringStringBytesOutput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function =
                new Function(
                        FUNC_CONSTANTCALL,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<byte[]>((byte[]) results.get(0).getValue());
    }

    public String getXATransactionState(String _path) throws ContractException {
        final Function function =
                new Function(
                        FUNC_GETXATRANSACTIONSTATE,
                        Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_path)),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeCallWithSingleValueReturn(function, String.class);
    }

    public TransactionReceipt addPath(String _path) {
        final Function function =
                new Function(
                        FUNC_ADDPATH,
                        Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_path)),
                        Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] addPath(String _path, TransactionCallback callback) {
        final Function function =
                new Function(
                        FUNC_ADDPATH,
                        Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_path)),
                        Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForAddPath(String _path) {
        final Function function =
                new Function(
                        FUNC_ADDPATH,
                        Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_path)),
                        Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple1<String> getAddPathInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_ADDPATH,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<String>((String) results.get(0).getValue());
    }

    public TransactionReceipt sendTransaction(
            String _uid,
            String _XATransactionID,
            BigInteger _XATransactionSeq,
            String _path,
            String _func,
            byte[] _args) {
        final Function function =
                new Function(
                        FUNC_SENDTRANSACTION,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_uid),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_XATransactionID),
                                new org.fisco.bcos.sdk.abi.datatypes.generated.Uint256(
                                        _XATransactionSeq),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_path),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_func),
                                new org.fisco.bcos.sdk.abi.datatypes.DynamicBytes(_args)),
                        Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] sendTransaction(
            String _uid,
            String _XATransactionID,
            BigInteger _XATransactionSeq,
            String _path,
            String _func,
            byte[] _args,
            TransactionCallback callback) {
        final Function function =
                new Function(
                        FUNC_SENDTRANSACTION,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_uid),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_XATransactionID),
                                new org.fisco.bcos.sdk.abi.datatypes.generated.Uint256(
                                        _XATransactionSeq),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_path),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_func),
                                new org.fisco.bcos.sdk.abi.datatypes.DynamicBytes(_args)),
                        Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForSendTransaction(
            String _uid,
            String _XATransactionID,
            BigInteger _XATransactionSeq,
            String _path,
            String _func,
            byte[] _args) {
        final Function function =
                new Function(
                        FUNC_SENDTRANSACTION,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_uid),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_XATransactionID),
                                new org.fisco.bcos.sdk.abi.datatypes.generated.Uint256(
                                        _XATransactionSeq),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_path),
                                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(_func),
                                new org.fisco.bcos.sdk.abi.datatypes.DynamicBytes(_args)),
                        Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple6<String, String, BigInteger, String, String, byte[]>
            getSendTransactionStringStringUint256StringStringBytesInput(
                    TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_SENDTRANSACTION,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<Utf8String>() {},
                                new TypeReference<Utf8String>() {},
                                new TypeReference<Uint256>() {},
                                new TypeReference<Utf8String>() {},
                                new TypeReference<Utf8String>() {},
                                new TypeReference<DynamicBytes>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple6<String, String, BigInteger, String, String, byte[]>(
                (String) results.get(0).getValue(),
                (String) results.get(1).getValue(),
                (BigInteger) results.get(2).getValue(),
                (String) results.get(3).getValue(),
                (String) results.get(4).getValue(),
                (byte[]) results.get(5).getValue());
    }

    public Tuple1<byte[]> getSendTransactionStringStringUint256StringStringBytesOutput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function =
                new Function(
                        FUNC_SENDTRANSACTION,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<byte[]>((byte[]) results.get(0).getValue());
    }

    public String getLatestXATransactionID() throws ContractException {
        final Function function =
                new Function(
                        FUNC_GETLATESTXATRANSACTIONID,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeCallWithSingleValueReturn(function, String.class);
    }

    public String getLatestXATransaction() throws ContractException {
        final Function function =
                new Function(
                        FUNC_GETLATESTXATRANSACTION,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeCallWithSingleValueReturn(function, String.class);
    }

    public TransactionReceipt deletePathList() {
        final Function function =
                new Function(
                        FUNC_DELETEPATHLIST,
                        Arrays.<Type>asList(),
                        Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] deletePathList(TransactionCallback callback) {
        final Function function =
                new Function(
                        FUNC_DELETEPATHLIST,
                        Arrays.<Type>asList(),
                        Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForDeletePathList() {
        final Function function =
                new Function(
                        FUNC_DELETEPATHLIST,
                        Arrays.<Type>asList(),
                        Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public static WeCrossProxy load(
            String contractAddress, Client client, CryptoKeyPair credential) {
        return new WeCrossProxy(contractAddress, client, credential);
    }

    public static WeCrossProxy deploy(Client client, CryptoKeyPair credential)
            throws ContractException {
        return deploy(
                WeCrossProxy.class, client, credential, getBinary(client.getCryptoSuite()), "");
    }
}
